home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d27
/
inter490.arc
/
INTERRUP.A
< prev
next >
Wrap
Text File
|
1990-08-04
|
247KB
|
6,718 lines
Interrupt List Release 90.4 Last change 8/5/90
This compilation is Copyright (c) 1989, 1990 Ralf Brown
---------------------------------------------
Please redistribute the following files unmodified as a group, in an archive
named INTER490:
INTERRUP.1ST the read-me file, containing credits, availability info
INTERRUP.A INT 00 through INT 1F \
INTERRUP.B INT 20 through INT 27 \ total 380 pages at 60 lines
INTERRUP.C INT 28 through INT 5F / per page, 412 with INTPRINT -p
INTERRUP.D INT 60 through INT FF /
INTERRUP.PRI a brief introduction to interrupts
INTPRINT.COM a simple formatter that also generates the list summary
INTPRINT.DOC instructions for INTPRINT
INTPRINT.C source code for INTPRINT
MEMORY.LST format of the BIOS data area
---------------------------------------------
If you notice any mistakes or omissions, please let me know! It is only with
YOUR help that the list can continue to grow at the current rate. Please send
all changes to me rather than distributing a modified version of the list.
Please read the file INTERRUP.1ST before asking me any questions. You may find
that it's already been addressed.
Ralf Brown
ARPA: ralf@cs.cmu.edu
UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
BIT: ralf%cs.cmu.edu@cmuccvma
FIDO: Ralf Brown 1:129/3.1
or post a message to the DR_DEBUG echo
CIS: >INTERNET:ralf@cs.cmu.edu
I reply to all e-mail submissions and inquiries, but some of my replies bounce
because of bad return paths. If you don't get a response from me within a
reasonable period of time, send it again with a better return path (starting at
harvard or ucbvax for UUCP, from the ARPA Internet for others).
---------------------------------------------
See INTERRUP.1ST for the key to system abbreviations and a list of the
trademarks mentioned here.
---------------------------------------------
DISCLAIMER: I verify the information contained in this list to the best of my
ability, but I cannot be held responsible for any problems caused by use or
misuse of the information, especially for those functions not officially
documented. If it is marked "internal", you should check it carefully to make
sure it works the same way in your version of the software (and please let me
know whether or not it works the same way). Information marked with "???" is
known to be incomplete or guesswork.
---------------------------------------------
The use of -> instead of = signifies that the indicated register or register
pair contains a pointer to the specified item, rather than the item itself
---------------------------------------------
INT 00 - internal hardware - DIVIDE ERROR
Automatically called at end of DIV or IDIV operation that results in error
or overflow. Normally set by DOS to display an error message and abort
the program.
Notes: on an 8086/8088, the return address points to the following instruction
on an 80286/80386, the return address points to the divide instruction
SeeAlso: INT 04
---------------------------------------------
INT 01 - internal hardware - SINGLE-STEP
generated at end of each machine instruction if TF bit in FLAGS is set
Notes: this is what makes the T command of DEBUG work for single-stepping
not generated after MOV to segment register or POP of segment register
(unless you have a very early 8088 with a microcode bug)
SeeAlso: INT 03
---------------------------------------------
INT 01 - 80386+ internal hardware - DEBUGGING EXCEPTIONS
Instruction address breakpoint fault - will return to execute instruction
Data address breakpoint trap - will return to following instruction
General detect fault, debug registers in use
Task-switch breakpoint trap
---------------------------------------------
INT 02 - external hardware - NMI (NON-MASKABLE INTERRUPT)
Generated by NMI signal in hardware. This signal has various uses:
Breakout switch on hardware debuggers
Parity error: all except Jr and CONV
Coprocessor interrupt: all except Jr and CONV
Keyboard interrupt: Jr, CONV
I/O channel check: CONV, PS50+
Disk-controller power-on request: CONV
System suspend: CONV
Real-time clock: CONV
System watch-dog timer, time-out interrupt: PS50+
DMA timer time-out interrupt: PS50+
---------------------------------------------
INT 03 - ONE-BYTE INTERRUPT
generated by opcode CCh
Notes: generally used to set breakpoints for debuggers
also used by Turbo Pascal versions 1,2,3 when {$U+} specified
SeeAlso: INT 01
---------------------------------------------
INT 04 - internal hardware - OVERFLOW
Generated by INTO instruction if OF flag is set. If flag is not set, INTO
is effectively a NOP.
Note: used to trap any arithmetic errors before the erroneous results
propagate further through the computation
SeeAlso: INT 00
---------------------------------------------
INT 05 - PRINT-SCREEN KEY
automatically called by keyboard scanner when print-screen key is pressed
Notes: normally executes routine to print the screen, but may call any routine
that can safely be executed from inside the keyboard scanner
status and result byte for default handler is at address 0050:0000
00h not active
01h PrtSc in progress
FFh last PrtSc encountered error
---------------------------------------------
INT 05 - internal hardware - BOUND CHECK FAILED (80186+)
Generated by BOUND instruction when the value to be tested is less than the
indicated lower bound or greater than the indicated upper bound. Returning
from this interrupt re-executes the failing BOUND instruction.
---------------------------------------------
INT 06 - internal hardware - UNDEFINED OPCODE (80286+)
---------------------------------------------
INT 07 - internal hardware - NO MATH UNIT AVAILABLE (80286+)
automatically called if a coprocessor instruction is encountered when no
coprocessor is installed
Note: can be used to emulate a numeric coprocessor in software
SeeAlso: INT 09"MATH UNIT PROTECTION"
---------------------------------------------
INT 08 - IRQ0 - TIMER INTERRUPT
Generated 18.2 times per second, this interrupt is used to keep the
time-of-day clock updated. Programs which need to be invoked regularly
should use INT 1C unless they need to reprogram the timer while still
keeping the time-of-day clock running at the proper rate.
SeeAlso: INT 1C
---------------------------------------------
INT 08 - internal hardware - DOUBLE FAULT (80286+ protected mode)
Called when multiple exceptions occur on one instruction, or an exception
occurs in an exception handler. If an exception occurs in the double fault
handler, the CPU goes into SHUTDOWN mode (which circuitry in the PC/AT
converts to a reset).
---------------------------------------------
INT 09 - IRQ1 - KEYBOARD INTERRUPT
Generated when data is received from the keyboard. This is normally a scan
code, but may also be an ACK or NAK of a command on AT-class keyboards.
SeeAlso: INT 15/AH=4Fh, INT 15/AH=85h, INT 16, INT 1B
---------------------------------------------
INT 09 - internal hardware - MATH UNIT PROTECTION FAULT (80286,80386 protected)
SeeAlso: INT 07"NO MATH UNIT"
---------------------------------------------
INT 09 - internal hardware - RESERVED BY Intel (80486 protected mode)
Note: this exception has been moved to INT 0D
---------------------------------------------
INT 0A - IRQ2 - EGA VERTICAL RETRACE
Notes: the TOPS and PCnet adapters use this interrupt request line by default
DOS 3.2 revectors IRQ2 to a stack-switching routine
on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
connects to the slave 8259. The BIOS redirects the interrupt for
IRQ9 back here.
SeeAlso: INT 71
---------------------------------------------
INT 0A - IRQ2 - Tandy 1000 HARD DISK
---------------------------------------------
INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
Note: newer Roland cards and MIDI interfaces by other manufacturers use
a jumper-selectable IRQ, but software and hardware generally defaults
to IRQ2
---------------------------------------------
INT 0A - internal hardware - INVALID TASK STATE SEGMENT (80286+ protected-mode)
---------------------------------------------
INT 0B - IRQ3 - COM2 INTERRUPT
Notes: the TOPS and PCnet adapters use this interrupt request line as an
alternate
on PS/2's, COM2 through COM8 share this interrupt on many PC's, COM4
shares this interrupt
SeeAlso: INT 0C
---------------------------------------------
INT 0B - internal hardware - NOT PRESENT (80286+ protected-mode)
Generated when loading a segment register if the segment descriptor
indicates that the segment is not currently in memory. May be used to
implement virtual memory.
---------------------------------------------
INT 0C - IRQ4 - COM1 INTERRUPT
Note: on many PC's, COM3 shares this interrupt
SeeAlso: INT 0B
---------------------------------------------
INT 0C - internal hardware - STACK FAULT (80286+)
Generated on stack overflow/underflow in protected mode.
Note that the 80286 will shut down in real mode if SP=1 before a push. On
the PC AT and compatibles, external circuitry generates a reset on shutdown.
---------------------------------------------
INT 0D - IRQ5 - FIXED DISK (PC), LPT2 (AT/PS)
---------------------------------------------
INT 0D - IRQ5 - Tandy 1000 60Hhz RAM REFRESH
---------------------------------------------
INT 0D - internal hardware - GENERAL PROTECTION VIOLATION (80286+)
Called in real mode when an instruction attempts to access a word operand
located at offset FFFFh or a PUSH MEM or POP MEM instruction contains an
invalid bit encoding in the second byte, or an instruction exceeds the
maximum length allowed (10 bytes for 80286, 15 bytes for 80386)
Called on 80486 protected-mode floating-point protection fault
---------------------------------------------
INT 0E - IRQ6 - DISKETTE INTERRUPT
Generated by floppy disk controller on completion of an operation
---------------------------------------------
INT 0E - internal hardware - PAGE FAULT (80386 native mode)
used to implement virtual memory
---------------------------------------------
INT 0F - IRQ7 - PRINTER INTERRUPT
Generated by the LPT1 printer adapter when printer becomes ready.
Notes: most printer adapters do not reliably generate this interrupt.
the 8259 interrupt controller generates an interrupt corresponding to
IRQ7 when an error condition occurs
---------------------------------------------
INT 10 - internal hardware - COPROCESSOR ERROR (80286+)
Generated by the CPU when the -ERROR pin is asserted by the coprocessor.
AT's and clones usually wire the coprocessor to use IRQ13, but not all
get it right.
SeeAlso: INT 09
---------------------------------------------
INT 10 - VIDEO - SET VIDEO MODE
AH = 00h
AL = mode (graphics mode if graphics resolution listed)
text pixel graphic colors disp scrn system
resol box resoltn page addr
00h = 40x25 8x8 B&W 8 B800 CGA
= 40x25 8x14 B&W 8 B800 ATI VIP
01h = 40x25 8x8 16 8 B800 CGA
= 40x25 8x14 16 8 B800 ATI VIP
02h = 80x25 8x8 B&W 4 B800 CGA
= 80x25 8x8 B&W 8 B800 EGA,MCGA,VGA
= 80x25 8x14 B&W 8 B800 ATI VIP
03h = 80x25 8x8 16 4 B800 CGA
= 80x25 8x8 16 8 B800 EGA,MCGA,VGA
04h = 40x25 8x8 320x200 4 1 B800 CGA
05h = 40x25 8x8 320x200 4 gray 1 B800 CGA
06h = 80x25 8x8 640x200 B&W 1 B800 CGA
07h = 80x25 9x14 mono 1 B000 MDA,Hercules
= 80x25 8 EGA,VGA
= 80x25 9x14 mono B000 ATI VIP
08h = 20x25 8x8 160x200 16 B800 PCjr,Tandy 1000
= 132x25 8x8 16 B800 ATI EGA/VGA Wonder **
= 132x25 8x8 mono B000 ATI EGA/VGA Wonder **
09h = 40x25 8x8 320x200 16 B800 PCjr,Tandy 1000
0Ah = 80x25 8x8 640x200 4 B800 PCjr,Tandy 1000
0Bh = reserved (used internally by EGA BIOS)
0Ch = reserved (used internally by EGA BIOS)
0Dh = 40x25 8x8 320x200 16 8 A000 EGA,VGA
0Eh = 80x25 8x8 640x200 16 4 A000 EGA,VGA
0Fh = 80x25 8x14 640x350 mono 2 A000 EGA,VGA
10h = 80x25 8x14 640x350 4or16 2 A000 EGA,VGA
11h = 80x30 8x16 640x480 mono A000 VGA,MCGA,ATI EGA,ATI VIP
12h = 80x30 8x16 640x480 16/256k A000 VGA,ATI VIP
= 80x30 8x16 640x480 16/64 A000 ATI EGA Wonder
13h = 40x25 8x8 320x200 256/256k A000 VGA,MCGA,ATI VIP
14h = 80x25 8x8 640x200 Lava Chrome II EGA
= 640x400 16 Tecmar VGA/AD
15h = 80x25 8x14 640x350 Lava Chrome II EGA
16h = 80x25 8x14 640x350 Lava Chrome II EGA
= 800x600 16 Tecmar VGA/AD
17h = 80x34 8x14 640x480 Lava Chrome II EGA
= 132x25 Tecmar VGA/AD
18h = 132x44 8x8 mono Tseng Labs EVA
= 132x44 8x8 16/256 2 B000 Tseng ET4000 chipset
= 80x34 8x14 640x480 Lava Chrome II EGA
= 1024x768 16 Tecmar VGA/AD
19h = 132x25 8x14 mono Tseng Labs EVA
= 132x25 8x14 16/256 4 B000 Tseng ET4000 chipset
1Ah = 132x28 8x13 mono Tseng Labs EVA
= 132x28 8x13 16/256 4 B000 Tseng ET4000 chipset
= 640x350 256 Tecmar VGA/AD
1Bh = 640x400 256 Tecmar VGA/AD
1Ch = 640x480 256 Tecmar VGA/AD
1Dh = 800x600 256 Tecmar VGA/AD
21h = 80x43 8x8 720x348 mono DESQview 2.x+Hercules ***
22h = 132x44 8x8 Tseng Labs EVA
= 132x44 8x8 16/256 2 B800 Tseng ET4000 chipset
= 132x44 8x8 Ahead Systems EGA2001
= 132x43 Allstar Peacock (VGA)
= 132x44 16 Orchid Prodesigner VGA
= 80x43 8x8 720x348 mono DESQview 2.x+Hercules ***
23h = 132x25 6x14 Tseng Labs EVA
= 132x25 8x14 16/256 4 B800 Tseng ET4000 chipset
= 132x25 8x14 Ahead Systems EGA2001
= 132x25 8x8 16 B800 ATI EGA Wonder,ATI VIP
= 132x28 Allstar Peacock (VGA)
= 132x28 16 Orchid Prodesigner VGA
24h = 132x28 6x13 Tseng Labs EVA
= 132x28 8x13 16/256 4 B800 Tseng ET4000 chipset
= 132x25 Allstar Peacock (VGA)
= 132x25 16 Orchid Prodesigner VGA
25h = 80x60 8x8 640x480 Tseng Labs EVA
= 80x60 8x8 640x480 16/256 1 A000 Tseng ET4000 chipset
= 640x480 16 VEGA VGA
= 80x60 8x8 640x480 16 A000 Orchid Prodesigner VGA
26h = 80x60 8x8 Tseng Labs EVA
= 80x60 8x8 16/256 2 B800 Tseng ET4000 chipset
= 80x60 8x8 640x480 Ahead Systems EGA2001
= 80x60 Allstar Peacock (VGA)
= 80x60 16 Orchid ProDesigner VGA
27h = 720x512 16 VEGA VGA
= 720x512 16 Genoa
= 132x25 8x8 mono B000 ATI EGA Wonder,ATI VIP
28h = ???x??? VEGA VGA
29h = 800x600 16 VEGA VGA
= 100x37 8x16 800x600 16 A000 Orchid
= 800x600 16 A000 STB,Genoa,Sigma
= 800x600 16 Allstar Peacock (VGA)
= 100x37 8x16 800x600 16/256 1 A000 Tseng ET4000 chipset
2Ah = 100x40 Allstar Peacock (VGA)
= 100x40 8x16 16 Orchid Prodesigner VGA
= 100x40 8x15 16/256 4 B800 Tseng ET4000 chipset
2Dh = 640x350 256 VEGA VGA
= 640x350 256/256k A000 Orchid, Genoa, STB
= 80x25 8x14 640x350 256/256k 1 A000 Tseng ET4000 chipset
2Eh = 640x480 256 VEGA VGA
= 80x30 8x16 640x480 256/256k A000 Orchid
= 640x480 256/256k A000 STB,Genoa,Sigma
= 80x30 8x16 640x480 256/256k 1 A000 Tseng ET4000 chipset
2Fh = 720x512 256 VEGA VGA
= 720x512 256 Genoa
= 80x25 8x16 640x400 256/256k 1 A000 Tseng ET4000 chipset
30h = 800x600 256 VEGA VGA
= 100x37 8x16 800x600 256/256k A000 Orchid
= 800x600 256/256k A000 STB,Genoa,Sigma
= 720x350 2 3270 PC
= 800x600 256 Cardinal
= ???x??? B800 AT&T 6300
= 100x37 8x16 800x600 256/256k 1 A000 Tseng ET4000 chipset
33h = 132x44 8x8 16 B800 ATI EGA Wonder,ATI VIP
36h = 960x720 16 VEGA VGA
= 960x720 16 STB
37h = 1024x768 16 VEGA VGA
= 128x48 8x16 1024x768 16 A000 Orchid
= 1024x768 16 A000 STB,Genoa,Sigma
= 132x44 8x8 mono B800 ATI EGA Wonder,ATI VIP
38h = 1024x768 256 STB VGA/EM-16 Plus (1MB)
= 128x48 8x16 1024x768 256/256k 1 A000 Tseng ET4000 chipset
40h = 80x25 8x16 640x400 2 1 B800 AT&T 6300, AT&T VDC600
= 80x25 8x16 640x400 2 1 B800 Compaq Portable
= 80x43 VEGA VGA, Tecmar VGA/AD
= 80x43 Video7 V-RAM VGA
= 80x43 Tatung VGA
41h = 640x200 16 1 AT&T 6300
= 132x25 VEGA VGA
= 132x25 Tatung VGA
= 132x25 Video7 V-RAM VGA
42h = 80x25 8x16 640x400 16 AT&T 6300, AT&T VDC600
= 132x43 VEGA VGA
= 132x43 Tatung VGA
= 132x43 Video7 V-RAM VGA
43h = unsupported 640x200 of 640x400 viewport AT&T 6300
= 80x60 VEGA VGA
= 80x60 Tatung VGA
= 80x60 Video7 V-RAM VGA
44h = disable VDC and DEB output AT&T 6300
= 100x60 VEGA VGA
= 100x60 Tatung VGA
= 100x60 Video7 V-RAM VGA
45h = 132x28 Tatung VGA
= 132x28 Video7 V-RAM VGA
46h = 100x40 8x15 800x600 2 AT&T VDC600
47h = 100x37 8x16 800x600 16 AT&T VDC600
48h = 80x50 8x8 640x400 2 B800 AT&T 6300, AT&T VDC600
49h = 80x30 8x16 640x480 Lava Chrome II EGA
4Dh = 120x25 VEGA VGA
4Eh = 120x43 VEGA VGA
4Fh = 132x25 VEGA VGA
50h = 132x25 9x14 mono Ahead Systems EGA2001
= 80x30 8x16 640x480 16 Paradise EGA-480
= 80x43 mono VEGA VGA
= 640x480 mono??? Taxan 565 EGA
= 80x34 Lava Chrome II EGA
= 132x25 8x14 16 8 B800 OAK Technologies VGA-16
51h = 80x30 8x16 Paradise EGA-480
= 80x30 Lava Chrome II EGA
= 80x34 8x14 640x480 16 ATI EGA Wonder
= 132x25 mono VEGA VGA
= 132x43 8x8 16 5 B800 OAK Technologies VGA-16
52h = 132x44 9x8 mono Ahead Systems EGA2001
= 132x43 mono VEGA VGA
= 94x29 8x14 752x410 16 ATI EGA Wonder
= 80x60 Lava Chrome II EGA
= 100x75 8x8 800x600 16 1 A000 OAK Technologies VGA-16
53h = 100x40 8x14 800x560 16 ATI EGA Wonder,ATI VIP
= 132x43 Lava Chrome II EGA
54h = 132x43 8x8 Paradise EGA-480
= 132x43 7x9 16/256k B800 Paradise VGA
= 132x43 8x9 16/256k B800 Paradise VGA on multisync
= 132x43 Taxan 565 EGA
= 132x43 AST VGA Plus
= 132x43 Hewlett-Packard D1180A
= 132x43 7x9 16 AT&T VDC600
= 132x25 Lava Chrome II EGA
= 100x42 8x14 800x600 16 A000 ATI EGA Wonder, VGA Wondr
55h = 132x25 8x14 Paradise EGA-480
= 132x25 7x16 16/256k B800 Paradise VGA
= 132x25 8x16 16/256k B800 Paradise VGA on multisync
= 132x25 Taxan 565 EGA
= 132x25 AST VGA Plus
= 132x25 Hewlett-Packard D1180A
= 132x25 7x16 16 AT&T VDC600
= 80x66 8x8 16/256k A000 ATI VIP
= 94x29 8x14 752x410 Lava Chrome II EGA
= 128x48 8x16 1024x768 16/256k A000 ATI VGA Wonder v4+ *!
56h = 132x43 8x8 3??? 2 B000 NSI Smart EGA+
= 132x43 7x9 4 B000 Paradise VGA
= 132x43 8x9 4 B000 Paradise VGA on multisync
= 132x43 mono Taxan 565 EGA
= 132x43 7x9 2 AT&T VDC600
57h = 132x25 8x14 3??? 4 B000 NSI Smart EGA+
= 132x25 7x16 4 B000 Paradise VGA
= 132x25 8x16 4 B000 Paradise VGA on multisync
= 132x25 mono Taxan 565 EGA
= 132x25 7x16 2 AT&T VDC600
58h = 100x75 8x8 800x600 16/256k A000 Paradise VGA
= 100x75 8x8 800x600 16 AT&T VDC600
= 80x33 8x14 16 B800 ATI EGA Wonder,ATI VIP
= 800x600 16 AST VGA Plus, Compaq VGA
= 800x600 16 Dell VGA
= 800x600 16 Hewlett-Packard D1180A
59h = 100x75 8x8 800x600 2 A000 Paradise VGA
= 100x75 8x8 800x600 2 AT&T VDC600
= 80x66 8x8 16/256k A000 ATI VIP
= 800x600 2 AST VGA Plus, Compaq VGA
= 800x600 2 Dell VGA
= 800x600 2 Hewlett-Packard D1180A
5Bh = 800x600 16 Maxxon, SEFCO TVGA, Imtec
= 640x350 256 Genoa 6400
= 80x30 8x16 B800 ATI VGA Wonder (undoc)
5Ch = 640x400 256 Logix, ATI Prism Elite
= 640x400 256 Maxxon, SEFCO TVGA, Imtec
= 640x400 256 Zymos Poach
= 640x480 256 Genoa 6400
5Dh = 640x480 256 Logix, ATI Prism Elite
= 640x480 256 Maxxon, SEFCO TVGA, Imtec
= 640x480 256 Zymos Poach
5Eh = 640x400 256 Paradise VGA,VEGA VGA
= 640x400 256 AST VGA Plus
= 640x400 256 Compaq VGA, Dell VGA
= 80x25 8x16 640x400 256 AT&T VDC600
= 800x600 16 Logix, ATI Prism Elite
= 800x600 256 Genoa 6400
= 800x600 256 Zymos Poach
5Fh = 640x480 256 Paradise VGA
= 640x480 256 AST VGA Plus
= 640x480 256 Compaq VGA, Dell VGA
= 640x480 256 Hewlett-Packard D1180A
= 80x30 8x16 640x480 256 AT&T VDC600 (512K)
= 1024x768 16 Logix, ATI Prism Elite
= 1024x768 16 Maxxon, Genoa 6400, Imtec
= 1024x768 16 Zymos Poach
60h = 80x??? ???x400 Corona/Cordata BIOS 4.10+
= 752x410 VEGA VGA
= 752x410 16 Tatung VGA
= 752x410 16 Video7 V-RAM VGA
= 640x400 256 Ahead B
61h = ???x400 Corona/Cordata BIOS 4.10+
= 720x540 VEGA VGA
= 720x540 16 Tatung VGA
= 720x540 16 Video7 V-RAM VGA
= 640x400 256 A000 ATI VGA Wonder
= 640x480 256 Ahead B
62h = 800x600 VEGA VGA
= 800x600 16 Tatung VGA
= 800x600 16 Video7 V-RAM VGA
= 640x480 256 A000 ATI VGA Wonder
= 800x600 256 Ahead B
63h = 1024x768 2 Video7 V-RAM VGA
= 800x600 256 A000 ATI VGA Wonder
= 1024x768 256 Ahead B (1MB)
64h = 1024x768 4 Video7 V-RAM VGA
65h = 1024x768 16 Video7 V-RAM VGA
= 1024x768 16 A000 ATI VGA Wonder
66h = 640x400 256 Tatung VGA
= 640x400 256 Video7 V-RAM VGA
67h = 640x480 256 Video7 V-RAM VGA
= 1024x768 4 A000 ATI VGA Wonder
69h = 720x540 256 Video7 V-RAM VGA
6Ah = 800x600 16 VESA standard interface
= 800x600 16 Ahead B, Genoa 6400
= 800x600 16 Zymos Poach
= 100x42 8x14 800x600 A000 ATI VGA Wonder (undoc)
70h = 800x600 16 Cardinal
= extended mode set (see AX=0070h) Everex Micro Enhancer EGA
71h = 100x35 8x16 800x600 16of64 A000 NSI Smart EGA+
= 960x720 16 Cardinal
72h = 1024x768 16 Cardinal
74h = 640x400 2 B800 Toshiba 3100 AT&T mode
= 1024x768 16 Ahead B
78h = 640x400 256 STB VGA/EM-16 Plus
= 640x400 256 Cardinal
79h = 640x480 256 Cardinal
7Ah = 720x540 256 Cardinal
7Ch = 512x512 16 Genoa
7Dh = 512x512 256 Genoa
7Eh = special mode set (see AX=007Eh) Paradise VGA, AT&T VDC600
7Fh = special function set (see AX=007Fh) Paradise VGA, AT&T VDC600
82h = 80x25 B&W AT&T VDC overlay mode *
83h = 80x25 AT&T VDC overlay mode *
86h = 640x200 B&W AT&T VDC overlay mode *
C0h = 640x400 2/prog pallet AT&T VDC overlay mode *
C4h = disable output AT&T VDC overlay mode *
D0h = 640x400 2 B800 DEC VAXmate AT&T mode
* for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
40h, or 44h
** for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
otherwise to mode 23h, thus selecting the appropriate (monochrome or
color) 132x25 character mode.
for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
resident
*** DESQview intercepts calls to change into these two modes (21h is page 0,
22h is page 1) even if there is no Hercules graphics board installed
*! ATI BIOS v4-1.00 has a text-scrolling bug in this mode
Notes: IBM standard modes do not clear the screen if the high bit of AL is set
the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
SpeedSTAR VGA, Groundhog Graphics Shadow VGA
SeeAlso: AX=0070h,007Eh,6F05h
---------------------------------------------
INT 10 - VIDEO - Everex Micro Enhancer EGA - EXTENDED MODE SET
AX = 0070h
BL = mode (graphics mode if graphics resolution listed)
text pixel graphic color disp scrn monitor
resol box resoltn page addr
00h = 640x480 16 multisync'ing
01h = 752x410 16 multisync'ing
02h = 800x600 16 multisync'ing
03h = 80x34 multisync'ing
04h = 80x60 multisync'ing
05h = 94x29 multisync'ing
06h = 94x51 multisync'ing
07h = reserved
08h = reserved
09h = 80x44 EGA
0Ah = 132x25 EGA
0Bh = 132x44 EGA
0Ch = 132x25 CGA
0Dh = 80x44 mono
0Eh = 132x25 mono
0Fh = 132x44 mono
10h = reserved
11h = 1280x350 4
12h = 1280x600 4
13h = 640x350 256
14h = 640x400 256
15h = 512x480 256
20h = 1024x768 16 (Everex 678 only)
30h = 640x480 256 (Everex 678 only)
31h = 800x600 256 (Everex 678 only)
---------------------------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
AX = 007Eh
BX = The horizontal dimension of the mode desired
CX = The vertical dimension of the mode desired
(both BX/CX in pixels for graphics modes, rows for alpha modes)
DX = The number of colors of the mode desired
(use 0 for monochrome modes)
Return: BH = 7Eh if successful (Paradise VGA)
AL = 7Eh if successful (AT&T VDC600)
SeeAlso: AH=00h,AX=0070h,007Fh,6F05h
---------------------------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
AX = 007Fh
BH = 00h set VGA operation
BH = 01h set non-VGA operation
color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation.
monochrome mode 7 will set non-VGA MDA/Hercules operation.
BH = 02h query mode status
Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode.
CH = total video RAM size in 64k byte units.
CL = video RAM used by the current mode.
BH = 03h lock current mode
allows current mode (VGA or non-VGA) to survive re-boot.
BH = 04h enter CGA mode (AT&T VDC600 only)
BH = 05h enter MDA mode (AT&T VDC600 only)
BH = 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh WRITE PARADISE REGISTERS 0,1,2,3,4,5
(port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
BL = value to set in the paradise register.
BH = 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
(port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
Return: BL = value of the paradise register.
BH = 7Fh if successful.
Return: AL = 7Fh if successful (AT&T VDC600)
SeeAlso: AX=007Eh
---------------------------------------------
INT 10 - VIDEO - SET CURSOR CHARACTERISTICS
AH = 01h
CH bits 0-4 = start line for cursor in character cell
bits 5-6 = blink attribute
(00=normal, 01=invisible, 10=slow, 11=fast on CGA/mono)
(00=normal, other=invisible on EGA/VGA)
CL bits 0-4 = end line for cursor in character cell
Note: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
returns unmapped cursor shape
BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
is not equal to the current video mode
SeeAlso: AH=03h
---------------------------------------------
INT 10 - VIDEO - SET CURSOR POSITION
AH = 02h
DH,DL = row, column (0,0 = upper left)
BH = page number
0 in graphics modes
0-3 in modes 2&3
0-7 in modes 0&1
SeeAlso: AH=03h
---------------------------------------------
INT 10 - VIDEO - READ CURSOR POSITION
AH = 03h
BH = page number
0 in graphics modes
0-3 in modes 2&3
0-7 in modes 0&1
Return: DH,DL = row,column
CH = cursor start line
CL = cursor end line
SeeAlso: AH=01h,02h
---------------------------------------------
INT 10 - VIDEO - READ LIGHT PEN POSITION (all but PS)
AH = 04h
Return: AH = 00h light pen switch not activated
= 01h light pen values in registers
DH,DL = row,column of current position
CH = raster line (0-199) (EGA) old graphics modes
CX = (EGA) raster line (0-nnn) new graphics modes
BX = pixel column (0-319 or 0-639)
---------------------------------------------
INT 10 - VIDEO - SELECT DISPLAY PAGE
AH = 05h
AL = display page
0-7 for modes 0 & 1
0-3 for modes 2 & 3
SeeAlso: AH=0Fh
---------------------------------------------
INT 10 - PCjr VIDEO - CRT/CPU PAGE REGISTERS
AH = 05h
AL =
80h read CRT/CPU page registers
81h set CPU page register
BL = new page register value
82h set CRT page register
BH = new page register value
83h set both display registers
BL = new CPU page register
BH = new CRT page register
Return: BH = CRT page register
BL = CPU page register
---------------------------------------------
INT 10 - VIDEO - GRAPHICS BITMAP BUFFER (Corona/Cordata BIOS v4.10+)
AH = 05h
AL =
00h set address of graphics bitmap buffer (video modes 60h,61h)
BX = segment of buffer
0Fh get address of graphics bitmap buffer (video modes 60h,61h)
Return: DX = segment of graphics bitmap buffer
---------------------------------------------
INT 10 - VIDEO - SCROLL PAGE UP
AH = 06h
AL = number of lines to scroll window (0 = blank whole window)
BH = attributes to be used on blanked lines
CH,CL = row,column of upper left corner of window to scroll
DH,DL = row,column of lower right corner of window
Warning: some implementations have a bug which destroys BP
SeeAlso: AH=07h,72h,73h
---------------------------------------------
INT 10 - VIDEO - SCROLL PAGE DOWN
AH = 07h
AL = number of lines to scroll window (0 = blank whole window)
BH = attributes to be used on blanked lines
CH,CL = row,column of upper left corner of window to scroll
DH,DL = row,column of lower right corner of window
Warning: some implementations have a bug which destroys BP
SeeAlso: AH=06h,72h,73h
---------------------------------------------
INT 10 - VIDEO - READ ATTRIBUTES/CHARACTER AT CURSOR POSITION
AH = 08h
BH = display page
Return: AL = character
AH = attribute of character (alpha modes)
SeeAlso: AH=09h
---------------------------------------------
INT 10 - VIDEO - WRITE ATTRIBUTES/CHARACTERS AT CURSOR POSITION
AH = 09h
AL = character
BH = display page
BL = attributes of character (alpha modes) or color (graphics modes)
if bit 7 set in graphics mode, character is xor'ed onto screen
CX = number of times to write character
Note: all characters are displayed, including CR, LF, and BS
SeeAlso: AH=08h,0Ah
---------------------------------------------
INT 10 - VIDEO - WRITE CHARACTERS ONLY AT CURSOR POSITION
AH = 0Ah
AL = character
BH = display page - alpha mode
BL = color of character (graphics mode, PCjr only)
if bit 7 set in graphics mode, character is xor'ed onto screen
CX = number of times to write character
(EGA) in graphics modes, replication count in CX works correctly
only if all character written are contains on the same row
Note: all characters are displayed, including CR, LF, and BS
SeeAlso: AH=08h,09h
---------------------------------------------
INT 10 - VIDEO - SET COLOR PALETTE
AH = 0Bh
BH = 00h
BL = border color (0-15) (text modes)
border color and background color (graphics modes)
(EGA)
BL = border color (0-15) and high-intensity background color
(16-31??? maybe should be high nybble?)
BH = 01h
BL = palette (0-3)
---------------------------------------------
INT 10 - VIDEO - WRITE DOT ON SCREEN
AH = 0Ch
AL = color of dot (0/1 in mode 6, 0-3 in modes 4 and 5)
if bit 7 set, new color will be XORed with current pixel
BH = display page (ignored if mode only supports one page)
CX = column
DX = row
Note: only valid in graphics modes
SeeAlso: AH=0Dh
---------------------------------------------
INT 10 - VIDEO - READ DOT ON SCREEN
AH = 0Dh
BH = display page (ignored if mode only supports one page)
CX = column
DX = row
Return: AL = color read
Note: only valid in graphics modes
SeeAlso: AH=0Ch
---------------------------------------------
INT 10 - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)
AH = 0Eh
AL = character
BH = display page (alpha modes)
BL = foreground color (graphics modes)
Note: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
and do the expected things
SeeAlso: AH=02h,0Ah
---------------------------------------------
INT 10 - VIDEO - GET CURRENT VIDEO MODE
AH = 0Fh
Return: AH = number of columns on screen
AL = current video mode (see INT 10/AH=00h)
BH = current active display page
Note: if mode was set with bit 7 set ("no blanking"), the returned mode will
also have bit 7 set
SeeAlso: AH=00h,05h
---------------------------------------------
INT 10 - VUIMG DISPLAY DRIVER (v2.20 and below)
AX = 0F56h
BX = 4756h
CX = 4944h
DL = function
01h installation check
Return: AX = 5649h
BX = 4443h
CX = 5647h
DH = 01h
02h get first video mode's parameters
Return: AX = BIOS mode number
BX = widht in pixels
CX = height in pixels
DX = number of colors
03h get next video mode's parameters
Return: as for DL=02h
04h display line???
ES:DI -> record (see below)
???
Return: ???
Format of record for DL=04h:
Offset Size Description
00h WORD row number
02h WORD starting column???
04h WORD ending column???
???
---------------------------------------------
INT 10 - VIDEO - SET PALETTE REGISTER (Jr, PS, TANDY 1000, EGA, VGA)
AX = 1000h
BL = palette register to set
BH = color value to store
Note: on MCGA, only BX = 0712h is supported
SeeAlso: AX=1002h,1007h
---------------------------------------------
INT 10 - VIDEO - SET BORDER COLOR REGISTER (Jr, PS, TANDY 1000, EGA, VGA)
AX = 1001h
BH = color value to store
SeeAlso: AX=1008h
---------------------------------------------
INT 10 - VIDEO - SET ALL PALETTE REGISTERS (Jr, PS, TANDY 1000, EGA, VGA)
AX = 1002h
ES:DX -> 17-byte palette register list (see below)
SeeAlso: AX=1000h,1009h
Format of palette register list:
Offset Size Description
00h 16 BYTEs values for palette registers 0-15
10h BYTE value for border color register
---------------------------------------------
INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
AX = 1003h
BL = 00h enable intensity
= 01h enable blink
---------------------------------------------
INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA)
AX = 1007h
BL = palette register number
Return: BH = palette register value
SeeAlso: AX=1000h,1009h
---------------------------------------------
INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA)
AX = 1008h
Return: BH = value
SeeAlso: AX=1001h
---------------------------------------------
INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
AX = 1009h
ES:DX -> 17-byte buffer (see AX=1002h)
SeeAlso: AX=1002h,1007h
---------------------------------------------
INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (EGA, VGA/MCGA)
AX = 1010h
BX = register number
CH = new value for green (0-63)
CL = new value for blue (0-63)
DH = new value for red (0-63)
SeeAlso: AX=1012h,1015h
---------------------------------------------
INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (EGA, VGA/MCGA)
AX = 1012h
BX = starting color register
CX = number of registers to set
ES:DX -> table of 3*CX bytes where each 3 byte group represents one
byte each of red, green and blue (0-63)
SeeAlso: AX=1010h,1017h
---------------------------------------------
INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
AX = 1013h
BL = 00h Select paging mode
BH = 00h Select 4 blocks of 64
BH = 01h Select 16 blocks of 16
BL = 01h Select Page
BH = page number (00h to 03h) or (00h to 0Fh)
Note: not valid in mode 13h
SeeAlso: AX=101Ah
---------------------------------------------
INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (EGA, VGA/MCGA)
AX = 1015h
BL = palette register number
Return: DH = red value
CH = green value
CL = blue value
SeeAlso: AX=1010h,1017h
---------------------------------------------
INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (EGA, VGA/MCGA)
AX = 1017h
BX = starting palette register
CX = number of palette registers to read
ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
Return: CX number of red, green and blue triples in buffer
SeeAlso: AX=1012h,1015h
---------------------------------------------
INT 10 - VIDEO - undocumented - SET PEL MASK (EGA, VGA/MCGA)
AX = 1018h
BL = new PEL value
SeeAlso: AX=1019h
---------------------------------------------
INT 10 - VIDEO - undocumented - READ PEL MASK (EGA, VGA/MCGA)
AX = 1019h
Return: BL = value read
SeeAlso: AX=1018h
---------------------------------------------
INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
AX = 101Ah
Return: BL = paging mode
00h four pages of 64
01h sixteen pages of 16
BH = current page
SeeAlso: AX=1013h
---------------------------------------------
INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (EGA, VGA/MCGA)
AX = 101Bh
BX = starting palette register
CX = number of registers to convert
SeeAlso: AH=12h/BL=33h
---------------------------------------------
INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
AH = 11h
The following functions will cause a mode set, completely resetting
the video environment, but without clearing the video buffer
AL = 00h, 10h: load user-specified patterns
ES:BP -> user table
CX = count of patterns to store
DX = character offset into map 2 block
BL = block to load in map 2
BH = number of bytes per character pattern
AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
BL = block to load
AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
BL = block to load
AL = 03h: set block specifier
BL = block specifier
(EGA/MCGA) bits 0,1 = block selected by chars with attribute
bit 3 = 0
bits 2,3 = block selected by chars with attribute
bit 3 = 1
(VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
bits 2,3,5 = block selected by attribute bit 3 = 1
AL = 04h, 14h: load ROM 8x16 character set (VGA)
The routines called with AL=1xh are designed to be called only
immediately after a mode set and are similar to the routines called
with AL=0xh, except that:
Page 0 must be active.
Bytes/character is recalculated.
Max character rows is recalculated.
CRT buffer length is recalculated.
CRTC registers are reprogrammed as follows:
R09 = bytes/char-1 ; max scan line (mode 7 only)
R0A = bytes/char-2 ; cursor start
R0B = 0 ; cursor end
R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
R14 = bytes/char ; underline loc
(*** BUG: should be 1 less ***)
---------------------------------------------
INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
AH = 11h
AL = 20h: set user 8 by 8 graphics characters (INT 1Fh)
ES:BP -> user table
AL = 21h: set user graphics characters
ES:BP -> user table
CX = bytes per character
BL = row specifier
00h user set
DL = number of rows
01h 14 rows
02h 25 rows
03h 43 rows
AL = 22h: ROM 8 by 14 set
BL = row specifier
AL = 23h: ROM 8 by 8 double dot
BL = row specifier
AL = 24h: load 8x16 graphics characters (VGA/MCGA)
BL = row specifier
Note: these functions are meant to be called only after a mode set
---------------------------------------------
INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
AX = 1130h
BH = pointer specifier
00h INT 1Fh pointer
01h INT 44h pointer
02h ROM 8 by 14 character font pointer
03h ROM 8 by 8 double dot font pointer
04h ROM 8 by 8 DD font (top half)
05h ROM alpha alternate (9 by 14) pointer
Return: ES:BP = specified pointer
CX = bytes/character
DL = character rows on screen
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
AH = 12h
BL = 10h
Return: BH = 00h color mode in effect (I/O port 3Dxh)
01h mono mode in effect (I/O port 3Bxh)
BL = 00h 64k bytes memory installed
01h 128k bytes memory installed
02h 192k bytes memory installed
03h 256k bytes memory installed
CH = feature bits
CL = switch settings
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
AH = 12h
BL = 20h select alternate print screen routine
SeeAlso: INT 05
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
AH = 12h
BL = 30h
AL = vertical resolution
00h 200 scan lines
01h 350 scan lines
02h 400 scan lines
Return: AL = 12h if function supported
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
AH = 12h
BL = 31h
AL = 00h enable default palette loading
01h disable default palette loading
Return: AL = 12h if function supported
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
AH = 12h
BL = 32h
AL = 00h enable video addressing
01h disable video addressing
Return: AL = 12h if function supported
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
AH = 12h
BL = 33h
AL = 00h enable gray scale summing
01h disable gray scale summing
Return: AL = 12h if function supported
SeeAlso: AX=101Bh
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
AH = 12h
BL = 34h
AL = 00h enable alphanumeric cursor emulation
01h disable alphanumeric cursor emulation
Return: AL = 12h if function supported
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
AH = 12h
BL = 35h
AL = 00h initial adapter video off
01h initial planar video on
02h switch active video off
03h switch inactive video on
80h *UNDOCUMENTED* set system board video active flag
ES:DX = buffer (128 byte save area if AL = 0, 2 or 3)
Return: AL = 12h if function supported
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
AH = 12h
BL = 36h
AL = 00h enable refresh
01h disable refresh
Return: AL = 12h if function supported
---------------------------------------------
INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
AH = 12h
BH = 55h
BL = subfunction
00h disabled enhanced features
01h enable enhanced features
02h get status
Return: AL = status flags
bit 3: set if enhanced features enabled
bits 7-5 monitor type
000 PS/2 mono
001 PS/2 color
010 multi-sync
011 Taxan 650 25kHz
100 RGB
101 mono
110 EGA
111 Compaq internal
03h disable register trapping (CGA emulation)
04h enable register trapping
05h program mode described by table at ES:BP
06h get mode table
AL = video mode
Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
BP = FFFFh on error
Format of ATI VGA Wonder video mode table:
Offset Size Description
00h BYTE number of columns
01h BYTE maximum row (number of rows - 1)
02h BYTE scan lines per row
03h WORD video buffer size in bytes
05h 4 BYTEs values for Sequencer registers 1-4
09h BYTE value for Miscellaneous Output register
0Ah 25 BYTEs values for CRTC registers 00h-18h
00h horizontal total size (chars)
01h horizontal displayed (chars)
02h horizontal sync position (chars)
03h horizontal sync width (chars)
04h vertical total size (char rows)
05h vertical total adjust (scan lines)
06h vertical displayed (char rows)
07h vertical sync position (char rows)
08h interlace mode
09h max scan line in row
0Ah cursor start scan line
0Bh cursor end scan line
0Ch screen memory start (high)
0Dh screen memory start (low)
0Eh cursor address (high)
0Fh cursor address (low)
10h light pen (high)
11h light pen (low)
23h 20 BYTEs default palette (values for Attribute Controller regs 00h-13h)
37h 9 BYTEs values for Graphics Controller registers 00h-08h
---------------------------------------------
INT 10 - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA)
AH = 13h
AL = mode
bit 1: set if string contains alternating characters and attributes
bit 0: set in order to move cursor after write
BL = attribute if AL bit 1 clear
BH = display page number
DH,DL = row,column of starting cursor position
CX = length of string
ES:BP -> start of string
Note: recognizes CR, LF, BS, and bell
SeeAlso: AH=09h,0Ah
---------------------------------------------
INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONVERTIBLE)
AX = 1400h
ES:DI -> character font
BH = number of bytes per character
BL = 00h load main font (block 0)
01h load alternate font (block 1)
CX = number of characters to store
DX = character offset into RAM font area
SeeAlso: AH=11h,AX=1401h
---------------------------------------------
INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONVERTIBLE)
AX = 1401h
BL = 00h load main font (block 0)
01h load alternate font (block 1)
SeeAlso: AH=11h,AX=1400h
---------------------------------------------
INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONVERTIBLE)
AX = 1402h
BL = 00h ignore high intensity attribute
01h map high intensity to underscore
02h map high intensity to reverse video
03h map high intensity to selected alternate font
---------------------------------------------
INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
AH = 15h
Return: AX = alternate display adapter type
0000h none
5140h LCD
5153h CGA
5151h mono
ES:DI -> parameter table (see below)
SeeAlso: AH=1Bh
Format of display parameter table:
Offset Size Description
00h WORD monitor model number
02h WORD vertical pixels per meter
04h WORD horizontal pixels per meter
06h WORD total vertical pixels
08h WORD total horizontal pixels
0Ah WORD horizontal pixel separation in micrometers
0Ch WORD vertical pixel separation in micrometers
---------------------------------------------
INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
AH = 15h
AL = superimpose mode
00h show graphics screen
01h show text screen
02h show text screen superimposed on graphics screen
---------------------------------------------
INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
AH = 1Ah
AL = 00h read display combination code
Return: BL = active display code (see below)
BH = alternate display code
01h set display combination code
BL = active display code (see below)
BH = alternate display code
Return: AL = 1Ah if function was supported
Values for display combination code:
00h no display
01h monochrome adapter w/ monochrome display
02h CGA w/ color display
03h reserved
04h EGA w/ color display
05h EGA w/ monochrome display
06h PGA w/ color display
07h VGA w/ monochrome analog display
08h VGA w/ color analog display
09h reserved
0Ah MCGA w/ digital color display
0Bh MCGA w/ monochrome analog display
0Ch MCGA w/ color analog display
FFh unknown display type
---------------------------------------------
INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
AH = 1Bh
BX = implementation type
= 0000h return funtionality/state information
ES:DI -> 64 byte buffer for state information (see below)
Return: AL = 1Bh if function supported
ES:DI buffer filled with state information
SeeAlso: AH=15h
Format of state information:
Offset Size Description
00h DWORD address of static funtionality table (see below)
04h BYTE video mode in effect
05h WORD number of columns
07h WORD length of regen buffer in bytes
09h WORD starting address of regen buffer
0Bh WORD cursor position for page 0
0Dh WORD cursor position for page 1
0Fh WORD cursor position for page 2
11h WORD cursor position for page 3
13h WORD cursor position for page 4
15h WORD cursor position for page 5
17h WORD cursor position for page 6
19h WORD cursor position for page 7
1Bh WORD cursor type
1Dh BYTE active display page
1Eh WORD CRTC port address
20h BYTE current setting of register (3?8)
21h BYTE current setting of register (3?9)
22h BYTE number of rows
23h WORD bytes/character
25h BYTE DCC of active display
26h BYTE DCC of alternate display
27h WORD number of colors supported in current mode
29h WORD number of pages supported in current mode
2Ah BYTE number of scan lines active
(0,1,2,3) = (200,350,400,480)
2Bh BYTE primary character block
2Ch BYTE secondary character block
2Dh BYTE miscellaneous flags
bit 0 all modes on all displays on
1 gray summing on
2 monochrome display attached
3 default palette loading disabled
4 cursor emulation enabled
5 0 = intensity; 1 = blinking
6 reserved
7 reserved
2Eh 3 BYTEs reserved
31h BYTE video memory available
00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
32h BYTE save pointer state flags
bit 0 512 character set active
1 dynamic save area present
2 alpha font override active
3 graphics font override active
4 palette override active
5 DCC override active
6 reserved
7 reserved
33h 13 BYTEs reserved
Format of Static Functionality Table:
Offset Size Description
00h BYTE modes supported #1
bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
01h BYTE modes supported #2
bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
02h BYTE modes supported #3
bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
bit 4 to bit 7 reserved
03h 4 BYTEs reserved
07h BYTE scan lines supported
bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
08h BYTE total number of character blocks available in text modes
09h BYTE maximum number of active character blocks in text modes
0Ah BYTE miscellaneous function flags #1
bit 0 all modes on all displays function supported
1 gray summing function supported
2 character font loading function supported
3 default palette loading enable/disable supported
4 cursor emulation function supported
5 EGA palette present
6 color palette present
7 color paging function supported
0Bh BYTE miscellaneous function flags #2
bit 0 light pen supported
1 save/restore state function 1Ch supported
2 intensity blinking function supported
3 Display Combination Code supported
4-7 reserved
0Ch WORD reserved
0Eh BYTE save pointer function flags
bit 0 512 character set supported
1 dynamic save area supported
2 alpha font override supported
3 graphics font override supported
4 palette override supported
5 DCC extension supported
6 reserved
7 reserved
0Fh BYTE reserved
---------------------------------------------
INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
AH = 1Ch
AL = 00h return state buffer size
Return: BX = number of 64 byte blocks needed
01h save video state
ES:BX -> buffer
02h restore video state
ES:BX -> buffer containing previously saved state
CX = requested states
bit 0 video hardware
1 BIOS data areas
2 color registers and DAC state
3-15 reserved
Return: AL = 1Ch if function supported
---------------------------------------------
INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE
AX = 3000h
CX = 0000h
DX = 0000h
Return: CX:DX -> 3270PC configuration table (see below for format)
CX:DX = 0000h:0000h if 3270PC Control Program not active
Format of 3270 PC configuration table:
Offset Size Description
00h BYTE aspect ratio X
01h BYTE aspect ratio Y
02h BYTE monitor type
00h = 5151 (mono) or 5272 (color)
01h = 3295
02h = 5151 or 5272 with XGA (???) graphics adapter
03h = 5279 with 3270PC G adapter
04h = 5379 model C01 with 3270PC GX adapter
05h = 5379 model M01 with 3270PC GX adapter
07h = non-3270PC with 3270 Workstation Program
FFh = 3270PC Control Program not loaded
03h BYTE reserved
04h BYTE adapter ID
00h = 5151/5272 adapter
04h = 5151/5272 with XGA adapter
30h = 3295 or 3270PC G/GX adapter
05h BYTE reserved
06h BYTE function flags 1
bit 7: mono text, 1 page
6: color text, 1 page
5: color text, 4 pages
4: CGA color graphics
3: 720x350 two-color graphics
2: 360x350 four-color graphics
1: 720x350 eight-color graphics
07h BYTE function flags 2
bit 6: GPI graphics supported
08h WORD segment address of Control Program Level table (see below)
0Ah 10 BYTEs reserved
Format of Control Program Level table:
Offset Size Description
00h WORD 02xxh = 3270PC Control Program v2.xx
03xxh = 3270PC Control Program v3.xx
04xxh = 3270 Workstation Program v1.xx
02h BYTE Control Program ID (00h)
03h 27 BYTEs Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
---------------------------------------------
INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
AH = 40h
SeeAlso: AH=41h
---------------------------------------------
INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
AH = 41h
SeeAlso: AH=40h
---------------------------------------------
INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
AH = 42h
---------------------------------------------
INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
AH = 43h
AL = page number (0,1)
SeeAlso: AH=45h
---------------------------------------------
INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
AH = 44h
AL = drawing function
00h clear pixels
01h set pixels
02h invert pixels
---------------------------------------------
INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
AH = 45h
AL = page number (0,1)
SeeAlso: AH=43h
---------------------------------------------
INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
AH = 46h
DI = x (0-720)
BP = y (0-347)
Note: function 44h determines operation and function 43h which page to use
SeeAlso: AH=47h
---------------------------------------------
INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
AH = 47h
DI = x (0-720)
BP = y (0-347)
Return: AL = 00h pixel clear
AL = 01h pixel set
Note: function 43h specifies which page is used
SeeAlso: AH=46h
---------------------------------------------
INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
AH = 48h
DI = x (0-720)
BP = y (0-347)
SeeAlso: AH=49h
---------------------------------------------
INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
AH = 49h
DI = x (0-720)
BP = y (0-347)
Note: function 48h or 49h specify first point, 44h operation and 43h page to
use
SeeAlso: AH=43h,44h,48h
---------------------------------------------
INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
AH = 4Ah
DI = x coordinate of lower left corner
BP = y coordinate of lower left corner
BX = height in pixels
CX = width in pixels
Note: draws a solid rectangle
SeeAlso: AH=4Eh
---------------------------------------------
INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
AH = 4Bh
AL = character to display
DI = x (0-720)
BP = y (0-347)
Note: unlike the other BIOS character functions character position is
specified in pixels rather than rows and columns
---------------------------------------------
INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
AH = 4Ch
AL = quadrant (1 = upper right, 2 = upper left, etc)
DI = x coordinate of center
BP = y coordinate of center
BX = radius
SeeAlso: AH=4Dh
---------------------------------------------
INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
AH = 4Dh
DI = x of center
BP = y of center
BX = radius
SeeAlso: AH=4Ch
---------------------------------------------
INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
AH = 4Eh
DI = x coordinate of an interior point
BP = y coordinate of an interior point
Notes: fills convex polygonal areas
the first fill makes the figure solid, the second erases it
SeeAlso: AH=4Ah
---------------------------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
AX = 4F00h
ES:DI -> 256-byte buffer for SuperVGA information (see below)
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
Format of SuperVGA information:
Offset Size Description
00h 4 BYTEs signature ('VESA')
04h WORD VESA version number
06h DWORD pointer to OEM name
0Ah 4 BYTEs capabilities
0Eh DWORD pointer to list of supported VESA and OEM video modes
12h 238 BYTEs reserved
---------------------------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
AX = 4F01h
CX = SuperVGA video mode
ES:DI -> 256-byte buffer mode information (see below)
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
Format of mode information:
Offset Size Description
00h WORD mode attributes
bit 0: mode supported
bit 1: optional information available
bit 2: BIOS output supported
bit 3: set if color, clear if monochrome
bit 4: set if graphics mode, clear if text mode
02h BYTE window A attributes
bit 0: exists
bit ???: readable
bit ???: writable
03h BYTE window B attributes (as for window A)
04h WORD window granularity
06h WORD window size
08h WORD start segment of window A
0Ah WORD start segment of window B
0Ch DWORD -> FAR window positioning function (equivalent to AX=4F05h)
10h WORD bytes per scan line
---remainder is optional for VESA modes, needed for OEM modes---
12h WORD width in pixels
14h WORD height in pixels
16h BYTE width of character cell in pixels
17h BYTE height if character cell in pixels
18h BYTE number of memory planes
19h BYTE number of bits per pixel
1Ah BYTE number of banks
1Bh BYTE memory model type
1Ch BYTE size of bank in K
---------------------------------------------
INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
AX = 4F02h
BX = mode
bit 15 set means don't clear video memory
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F03h
Values for VESA video mode
100h 640x400x256
101h 640x480x256
102h 800x600x16
103h 800x600x256
104h 1024x768x16
105h 1024x768x256
106h 1280x1024x16
107h 1280x1024x256
---------------------------------------------
INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
AX = 4F03h
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
BX = video mode
SeeAlso: AX=4F02h
---------------------------------------------
INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
AX = 4F04h
DL = subfunction
00h get state buffer size
Return: BX = number of 64-byte blocks needed
01h save video states
ES:BX -> buffer
02h restore video states
ES:BX -> buffer
CX = flags for states to save/restore
bit 0: video hardware state
bit 1: video BIOS data state
bit 2: video DAC state
bit 3: SuperVGA state
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
---------------------------------------------
INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
AX = 4F05h
BH = subfunction
00h select video memory window
DX = window address in video memory (in granularity units)
01h get video memory window
Return: DX = window address in video memory (in gran. units)
BL = window number
00h window A
01h window B
Return: AL = 4Fh function supported
AH = status
00h successful
01h failed
---------------------------------------------
INT 10 - SCROLOCK.COM - INSTALLATION CHECK
AH = 50h
Return: BX = 1954h if installed
AL = 00 if inactive, nonzero if active
Note: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
SeeAlso: AH=51h
---------------------------------------------
INT 10 - SCROLOCK.COM - ENABLE/DISABLE
AH = 51h
AL = state
00h disable
nonzero enable
Note: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
SeeAlso: AH=50h
---------------------------------------------
INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
AX = 5555h
Return: AX = AAAAh if installed
BX:CX -> ??? routine in SMS.COM resident portion
-> data area in VCONFIG
Note: Super Switch (SMS.COM) is a video mode switch program supplied with
ATI EGA Wonder. It also maps video mode 08h to 27h or 23h
SeeAlso: INT 10/AH=00h
Format of data area:
Offset Size Description
00h DWORD original INT 09 vector
04h DWORD original INT 10 vector
08h DWORD original INT 1C vector
0Ch WORD screen saver state, 0=off, 1=on
0Eh WORD blanking interval in clock ticks
---------------------------------------------
INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
AX = 6A00h
BX = 0000h
CX = 0000h
DX = buffer length (may be 0)
ES:DI -> buffer
Return: BX = number of bytes stored in buffer
CX = bytes required for all descriptions (0 if no DGIS)
Note: buffer contains descriptions and addresses of DGIS-compatible
display(s) and printer(s)
---------------------------------------------
INT 10 - DGIS - REDIRECT CHARACTER OUTPUT
AX = 6A01h
CX = 0000h
ES:DI = address of device to send INT 10 output to
Return: CX = 0000h output could not be redirected
else INT 10h output now routed to requested display
SeeAlso: AX=6A02h
---------------------------------------------
INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
AX = 6A02h
ES:DI = 0000h:0000h
Return: ES:DI = 0000h:0000h if current display is non-DGIS
else address of the current DGIS INT 10 display
SeeAlso: AX=6A01h
---------------------------------------------
INT 10 - VIDEO - INSTALLATION CHECK (Video7 VGA,VEGA VGA)
AX = 6F00h
Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
---------------------------------------------
INT 10 - VIDEO - GETINFO (Video7 VGA,VEGA VGA)
AX = 6F01h
Return: AL = monitor type code (VEGA VGA only)
AH = status register information
bit 0 = display enable
0 = display enabled
1 = vertical or horizontal retrace in progress
bit 1 = light pen flip flop set
bit 2 = light pen switch activated
bit 3 = vertical sync
bit 4 = monitor resolution
0 = high resolution (>200 lines)
1 = low resolution (<=200 lines)
bit 5 = display type
0 = color
1 = monochrome
bits6,7= diagnostic bits
Note: bits 0-3 are the same as the EGA/VGA status register bits 0-3
---------------------------------------------
INT 10 - VIDEO - GET MODE AND SCREEN RESOLUTION (Video7 VGA, VEGA VGA)
AX = 6F04h
Return: AL = current video mode (see AX=6F05h)
BX = horizontal columns (text) or pixels (graphics)
CX = vertical columns (text) or pixels (graphics)
SeeAlso: AX=6F05h
---------------------------------------------
INT 10 - VIDEO - SET VIDEO MODE (Video7 VGA, VEGA EXTENDED EGA/VGA)
AX = 6F05h
BL = mode (graphics mode if graphics resolution listed)
text pixel graphic color disp scrn system
resol box resoltn page addr
00h-13h = standard IBM modes
40h = 80x43 8x8 Video7/VEGA VGA
41h = 132x25 8x14 Video7/VEGA VGA
42h = 132x43 8x8 Video7/VEGA VGA
43h = 80x60 8x8 Video7/VEGA VGA
44h = 100x60 8x8 Video7/VEGA VGA
45h = 132x28 8x8 Video7/VEGA VGA
60h = 752x410 16 Video7 VGA, VEGA VGA
61h = 720x540 16 Video7 VGA, VEGA VGA
= 720x540 16 Northgate
62h = 800x600 16 Video7 VGA, VEGA Ext EGA
63h = 1024x768 2 Video7 VGA
64h = 1024x768 4 Video7 VGA
65h = 1024x768 16 Video7 VGA, VEGA Ext EGA
66h = 640x400 256 Video7 VGA, VEGA Ext VGA
= 640x400 256 Northgate
67h = 640x480 256 Video7 VGA, VEGA Ext VGA
68h = 720x540 256 Video7 VGA, VEGA Ext VGA
69h = 800x600 256 Video7 VGA, VEGA Ext VGA
70h = 752x410 16gray Video7 VGA, VEGA VGA
71h = 720x540 16gray Video7 VGA, VEGA VGA
72h = 800x600 16gray Video7 VGA
73h = 1024x768 2gray Video7 VGA
74h = 1024x768 4gray Video7 VGA
75h = 1024x768 16gray Video7 VGA
76h = 640x400 256gray Video7 VGA
77h = 640x480 256gray Video7 VGA
78h = 720x540 256gray Video7 VGA
79h = 800x600 256gray (future)
SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
---------------------------------------------
INT 10 - VIDEO - SELECT AUTOSWITCH MODE (V7VGA,VEGA VGA)
AX = 6F06h
BL = Autoswitch mode select
00h select EGA/VGA-only modes
01h select Autoswitched VGA/EGA/CGA/MGA modes
02h select 'bootup' CGA/MGA modes
BH = enable/disable (00h enable, 01h = disable selection)
---------------------------------------------
INT 10 - VIDEO - GET VIDEO MEMORY CONFIGURATION (V7VGA,VEGA VGA)
AX = 6F07h
Return: AL = 6Fh
AH = bits 0-6 = number of 256K blocks of video memory
bit 7 = DRAM/VRAM (0: DRAM, 1: VRAM)
BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
CX = 0000h
SeeAlso: AH=12h/BL=10h
---------------------------------------------
INT 10 - VIDEO - GET VIDEO RAM ADDRESS (TANDY 1000)
AH = 70h
Return: AX = segment address of the following
[BX] = offset address of green plane
[CX] = segment address of green plane
[DX] = segment address of red/blue plane
(red offset = 0, blue offset = 4000)
SeeAlso: AH=71h
---------------------------------------------
INT 10 - VIDEO - GET INCRAM ADDRESSES (TANDY 1000)
AH = 71h
Return: AX = segment address of the following
[BX] = segment address of INCRAM
[CX] = offset address of INCRAM
SeeAlso: AH=70h
---------------------------------------------
INT 10 - VIDEO - SCROLL SCREEN RIGHT (TANDY 1000)
AH = 72h
AL = number of columns blanked at left of window
00h = blank entire window
BH = attributes to be used on blank columns
CH,CL = row, column of upper left corner of window
DH,DL = row, column of lower right corner
SeeAlso: AH=06h,07h,73h
--------------------------------------------
INT 10 - VIDEO - SCROLL SCREEN LEFT (TANDY 1000)
AH = 73h
AL = number of columns blanked at right of window
00h = blank entire window
BH = attributes to be used on blank columns
CH,CL = row, column of upper left corner of window
DH,DL = row, column of lower right corner
SeeAlso: AH=06h,07h,72h
---------------------------------------------
INT 10 - VIDEO (DESQview 2.0x only) - internal - SET ??? HANDLER
AH = 80h
DX = 4456h ('DV')
ES:DI -> FAR subroutine to be called on ???
Return: DS = segment of DESQview data structure for video buffer
Note: this function is probably meant for internal use only, due to the magic
value required in DX
the subroutine seems to be called when the DESQview menu is accessed;
on entry, AL = 3 or 4
---------------------------------------------
INT 10 - VIDEO (DESQview 2.0x only) - internal - GET ???
AH = 81h
DX = 4456h ('DV')
Return: ES = segment of DESQview data structure for video buffer
BYTE ES:[0] = current window number in DV 2.0x
Note: this function is probably meant for internal use only, due to the magic
value required in DX
---------------------------------------------
INT 10 - VIDEO (DESQview 2.0x only) - internal - GET CURRENT WINDOW INFO
AH = 82h
DX = 4456h ('DV')
Return: DS = segment in DESQview for data structure
in DV 2.00,
BYTE DS:[0] = window number
WORD DS:[1] = segment of other data structure
WORD DS:[3] = segment of window's object handle
ES = segment of DESQview data structure for video buffer
AL = current window number
AH = ???
BL = direct screen writes
00h program does not do direct writes
01h program does direct writes, so shadow buffer not usable
BH = ???
CL = current video mode
CH = ???
Note: this function is probably meant for internal use only, due to the magic
value required in DX
---------------------------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
AX = BF00h
Note: all registers preserved and the internal monitor is blanked
the external monitor becomes the active monitor
SeeAlso: AX=BF01h
---------------------------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
AX = BF01h
Note: all registers preserved and the external monitor is blanked
the internal monitor becomes the active monitor
SeeAlso: AX=BF00h
---------------------------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
AX = BF02h
BH = master mode
04h CGA
05h EGA
07h MDA
SeeAlso: AX=BF03h
---------------------------------------------
INT 10 - VIDEO - Compaq Portable Extensions - GET ENVIRONMENT
AX = BF03h
BX = 0000h
Return: BH = active monitor
00h = external
01h = internal
BL = master mode
00h = switchable VDU not present
04h = CGA
05h = EGA
07h = MDA
CH = 00h (reserved)
CL = switchable VDU mode supported
bit 0 = CGA supported
bits 1,2 = reserved (1)
bit 3 = MDA supported
bits 4-7 = reserved (1)
DH = internal monitor type
00h = none
01h = Dual-mode monitor
02h = 5153 RGB monitor
03h = Compaq Color monitor
04h = 640x400 flat panel
DL = external monitor type
00h = none
01h = dual-mode monitor
02h = 5153 RGB monitor
03h = Compaq Color monitor
04h = 640x400 flat panel
SeeAlso: AH=1Ah, AX=BF00h,BF01h,BF02h
---------------------------------------------
INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
AX = BF04h
BH = 00h enable delay
01h disable delay
---------------------------------------------
INT 10 - VIDEO - MSHERC.COM - INSTALLATION CHECK???
AH = EFh
Return: DL = video adapter type
00h original Hercules
01h ??? \ one is probably Hercules Plus, the other
02h ??? / Hercules InColor
FFh non-Hercules
DH = ???
Note: MSHERC.COM is a support program for the Microsoft Quick languages which
makes their graphics libraries compatible with a Hercules card by
adding video modes 08h and 88h, and supporting text in the new
graphics modes. While in mode 08h or 88h, INT 10 supports the
Hercules card much like a CGA.
---------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - READ ONE REGISTER
AH = F0h
BL = register number
BH = 00h
DX = group index
Pointer/data chips
00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
08h Sequencer (5 registers) 3C4h
10h Graphics Controller (9 registers) 3CEh
18h Attribute Controller (20 registers) 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color modes)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
Return: BL = data
Note: also present in OS/2 compatibility box
SeeAlso: AH=F1h,F2h
---------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - WRITE ONE REGISTER
AH = F1h
DX = group index (see AH=F0h)
if single register:
BL = value to write
otherwise
BL = register number
BH = value to write
Return: BL = data
Note: also present in OS/2 compatibility box
SeeAlso: AH=F0h,F3h
---------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - READ REGISTER RANGE
AH = F2h
CH = starting register number
CL = Number of registers (>1)
DX = group index
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
ES:BX -> buffer, CL bytes
Note: also present in OS/2 compatibility box
SeeAlso: AH=F0h,F3h
---------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - WRITE REGISTER RANGE
AH = F3h
CH = starting register
CL = number of registers (>1)
DX = group index (see AH=F2h)
ES:BX -> buffer, CL bytes
Note: also present in OS/2 compatibility box
SeeAlso: AH=F1h,F2h
---------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - READ REGISTER SET
AH = F4h
CX = number of registers to read (>1)
ES:BX -> table of records (see below)
Return: register values in table filled in
Note: also present in OS/2 compatibility box
SeeAlso: AH=F0h,F2h,F5h
Format of entries in table of register records:
Offset Size Description
00h WORD group index
Pointer/data chips
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
02h BYTE register number (0 for single registers)
03h BYTE register value
---------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - WRITE REGISTER SET
AH = F5h
CX = number of registers to write (>1)
ES:BX -> table of records (see AH=F4h)
Note: also present in OS/2 compatibility box
SeeAlso: AH=F1h,F3h,F4h
--------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - REVERT TO DEFAULT REGISTERS
AH = F6h
Note: also present in OS/2 compatibility box
SeeAlso: AH=F7h
--------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - DEFINE DEFAULT REGISTER TABLE
AH = F7h
DX = port number
Pointer/data chips
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color modes)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
ES:BX -> table of one-byte entries, one byte to be written to each
register
Note: also present in OS/2 compatibility box
SeeAlso: AH=F6h
--------------------------------------------
INT 10 - Microsoft Mouse driver EGA support - INTERROGATE DRIVER
AH = FAh
BX = 0000h
Return: BX = 0000h if mouse driver not present
ES:BX -> EGA Register Interface version number, if present:
byte 0 = major release number
byte 1 = minor release number
Note: also present in OS/2 compatibility box
--------------------------------------------
INT 10 - FASTBUFF.COM - INSTALLATION CHECK
AH = FAh
Return: AX = 00FAh if installed
ES = segment of resident code
Note: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
Steiner
--------------------------------------------
INT 10 - VIDEO (TopView) - GET VIDEO BUFFER
AH = FEh
ES:DI = segment:offset of assumed video buffer
Return: ES:DI = segment:offset of actual video buffer
Notes: if no multitasker is installed, ES:DI is returned unchanged
TopView requires a call to AH=FFh to notify if that the screen has
changed; DESQview will check for changes itself until the first call
to AH=FFh
SeeAlso: INT 15/AX=1024h, INT 21/AH=2Bh"DESQview"
---------------------------------------------
INT 10 - VIDEO (TopView) - UPDATE REAL SCREEN FROM VIDEO BUFFER
AH = FFh
CX = number of sequential characters that have been modified
DI = offset of first character that has been modified
ES = segment of video buffer
Note: avoid CX=0000h
---------------------------------------------
INT 11 - 80486 internal hardware - ALIGNMENT CHECK
Bit AC in the EFLAGS register enables this interrupt on a memory reference
on a mis-aligned address when in privilege mode 3.
---------------------------------------------
INT 11 - EQUIPMENT DETERMINATION
Return: AX = equipment flag bits
0 diskette installed
1 8087 present
2 mouse installed (PS2 only)
2,3 number of 16K banks of RAM on motherboard (PC only)
number of 64K banks of RAM on motherboard (XT only)
always = 11 on AT and above
4,5 initial video mode
01 = 40x25 color
10 = 80x25 color
11 = 80X25 IBM monochrome
6,7 number of diskette drives (only if bit 0 = 1)
00 = 1, 01 = 2, 10 = 3, 11 = 4
8 0 = DMA present
1 = no DMA on system (PCjr, some Tandy 1000s, 1400LT)
9-11 number of RS232 cards
12 game I/O attached
13 serial printer installed (PCjr)
internal modem installed (PC/Convertible)
14,15 number of printers
---Compaq and many other 386/486 machines--
EAX bit 23: page tables set so that Weitek coprocessor addressable in
real mode
bit 24: Weitek math coprocessor present
SeeAlso: INT 12
---------------------------------------------
INT 12 - MEMORY SIZE
Return: AX = number of contiguous 1K blocks of memory
SeeAlso: INT 11
---------------------------------------------
INT 13 - DISK - RESET DISK SYSTEM
AH = 00h
DL = drive (if bit 7 is set both hard disks and floppy disks reset)
Note: forces controller to recalibrate drive heads (seek to track 0)
SeeAlso: AH=0Dh, INT 21/AH=0Dh
---------------------------------------------
INT 13 - DISK - STATUS OF DISK SYSTEM
AH = 01h
Return: AL = status of last disk operation
00h = successful completion
01h = bad command
02h = address mark not found
03h = write attempted on write-protected disk
04h = sector not found
05h = reset failed (hard disk)
06h = diskette changed
07h = parameter act. failed (hard disk)
08h = DMA overrun (floppy disk)
09h = DMA across 64K boundary
0Ah = bad sector detected (hard disk)
0Bh = bad track detected (hard disk)
0Ch = unsupported track
0Dh = invalid number of sectors on format (hard disk)
0Eh = control data address mark detected (hard disk)
0Fh = DMA arbitration error (hard disk)
10h = bad CRC/ECC
11h = data ECC corrected (hard disk)
20h = controller failure
40h = seek failed
80h = time out
AAh = drive not ready (hard disk)
BBh = undefined error (hard disk)
CCh = write fault (hard disk)
E0h = status register error (hard disk)
FFh = sense operation failed (hard disk)
---------------------------------------------
INT 13 - DISK - READ SECTORS INTO MEMORY
AH = 02h
AL = number of sectors to read
CH = track (for hard disk, bits 8,9 in high bits of CL)
CL = sector (01h to number of sectors/track for drive)
DH = head
DL = drive
ES:BX -> buffer to fill
Return: CF set on error
AH = status (see AH=01h)
AL = number of sectors read
Notes: results undefined if attempting to read zero sectors
AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
apparently, the AMI BIOS also follows this convention
SeeAlso: AH=03h,0Ah
---------------------------------------------
INT 13 - DISK - WRITE SECTORS FROM MEMORY
AH = 03h
AL = number of sectors to write
CH = track (if hard disk, bits 8,9 in high bits of CL)
CL = sector (if hard disk, high two bits are high bits of track #)
DH = head
DL = drive
ES:BX -> buffer
Return: CF set on error
AH = status (see AH=01h)
AL = number of sectors written
Notes: results undefined if attempting to write zero sectors
AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
apparently, the AMI BIOS also follows this convention
SeeAlso: AH=02h,0Bh
---------------------------------------------
INT 13 - DISK - VERIFY SECTORS
AH = 04h
AL = number of sectors to verify
CH = track (for hard disk, bits 8,9 in high bits of CL)
CL = sector (01h to number of sectors per track for drive)
DH = head
DL = drive
Return: CF set on error
AH = status (see AH=01h)
AL = number of sectors verified
Notes: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
apparently, the AMI BIOS also follows this convention
---------------------------------------------
INT 13 - FLOPPY - FORMAT TRACK
AH = 05h
AL = number of sectors to create on this track
CH = track
CL = sector (01h to number of sectors per track for drive)
DH = head
DL = drive
ES:BX -> array of 4-byte address fields
BYTE track
BYTE head
BYTE sector
BYTE bytes/sector 0=128, 1=256, 2=512, 3=1024
Return: CF set if error occurred
AH = status code (see AH=01h)
---------------------------------------------
INT 13 - FIXED DISK - FORMAT TRACK
AH = 05h
AL = interleave value (XT only)
ES:BX = 512-byte format buffer
the first 2*(sectors/track) bytes contain F,N for each sector
F = 00 for good sector, 80h for bad sector
N = sector number
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number (01h to number of sectors per track for drive)
DH = head
DL = drive
Return: AH = status code (see AH=01h)
Notes: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
apparently, the AMI BIOS also follows this convention
SeeAlso: AH=06h,07h,1Ah
---------------------------------------------
INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
AH = 06h
AL = interleave value
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
Return: AH = status code (see AH=01h)
Notes: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
apparently, the AMI BIOS also follows this convention
---------------------------------------------
INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
AH = 07h
AL = interleave value (XT only)
ES:BX = 512-byte format buffer (see AH=05h)
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
Return: AH = status code (see AH=01h)
Note: AWARD AT BIOS extended to handle more than 1024 cylinders by placing
bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
apparently, the AMI BIOS also follows this convention
SeeAlso: AH=1Ah
---------------------------------------------
INT 13 - DISK - GET CURRENT DRIVE PARAMETERS (XT,AT,XT286,CONV,PS)
AH = 08h
DL = drive number
Return: CF set on error
AH = status code (see AH=01h)
BL = drive type (see AH=17h) (AT/PS2 floppies only)
DL = number of consecutive acknowledging drives
DH = maximum value for head number
CL = maximum value for sector number (bits 0-5)
CH = maximum value for cylinder number (highest bits in bits 6,7 of CL)
ES:DI -> drive parameter table
---------------------------------------------
INT 13 - FIXED DISK - INITIALIZE TWO FIXED DISK BASE TABLES (XT,AT,XT286,PS)
AH = 09h
Return: CF set on error
AH = status code (see AH=01h)
INT 41h points to table for drive 0
INT 46h points to table for drive 1
---------------------------------------------
INT 13 - FIXED DISK - READ LONG (XT,AT,XT286,PS)
AH = 0Ah
DL = drive ID
DH = head
CH = cylinder (bits 8,9 in high bits of CL)
CL = sector (01h to number of sectors per track for drive)
ES:BX -> buffer to fill
Return: CF set on error
AH = status code (see AH=01h)
AL = number of sectors read
Note: used for diagnostics only on PS/2 systems
SeeAlso: AH=02h,0Bh
---------------------------------------------
INT 13 - FIXED DISK - WRITE LONG (XT,AT,XT286,PS)
AH = 0Bh
DL = drive ID
DH = head
CH = cylinder (bits 8,9 in high bits of CL)
CL = sector (01h to number of sectors per track for drive)
ES:BX -> buffer containing data
Return: CF set on error
AH = status code (see AH=01h)
AL = number of sectors written
Note: used for diagnostics only on PS/2 systems
SeeAlso: AH=03h,0Ah
---------------------------------------------
INT 13 - FIXED DISK - SEEK TO CYLINDER (XT,AT,XT286,PS)
AH = 0Ch
DL = drive ID
DH = head
CH = cylinder (bits 8,9 in high bits of CL)
Return: CF set on error
AH = status code (see AH=01h)
---------------------------------------------
INT 13 - FIXED DISK - ALTERNATE DISK RESET (XT,AT,XT286,PS)
AH = 0Dh
DL = drive ID
Return: CF set on error
AH = status code (see AH=01h)
Note: not for PS/2 ESDI drives
SeeAlso: AH=00h, INT 21/AH=0Dh
---------------------------------------------
INT 13 - FIXED DISK - READ SECTOR BUFFER (XT,PS)
AH = 0Eh
ES:BX -> buffer
Return: CF set on error
AH = status code (see AH=01h)
Notes: transfers controller's sector buffer. No data is read from the drive
used for diagnostics only on PS/2 systems
SeeAlso: AH=0Ah
---------------------------------------------
INT 13 - FIXED DISK - WRITE SECTOR BUFFER (XT,PS)
AH = 0Fh
ES:BX -> buffer
Return: CF set on error
AH = status code (see AH=01h)
Notes: should be called before formatting to initialize the controller's
sector buffer.
used for diagnostics only on PS/2 systems
SeeAlso: AH=0Bh
---------------------------------------------
INT 13 - FIXED DISK - TEST FOR DRIVE READY (XT,AT,XT286,PS)
AH = 10h
DL = drive ID
Return: CF set on error
AH = status code (see AH=01h)
---------------------------------------------
INT 13 - FIXED DISK - RECALIBRATE DRIVE (XT,AT,XT286,PS)
AH = 11h
DL = drive ID
Return: CF set on error
AH = status code (see AH=01h)
SeeAlso: AH=19h
---------------------------------------------
INT 13 - FIXED DISK - CONTROLER RAM DIAGNOSTIC (XT,PS)
AH = 12h
Return: CF set on error
AH = status code (see AH=01h)
Note: used for diagnostics only on PS/2 systems
SeeAlso: AH=13h,14h
---------------------------------------------
INT 13 - FIXED DISK - DRIVE DIAGNOSTIC (XT,PS)
AH = 13h
Return: CF set on error
AH = status code (see AH=01h)
Note: used for diagnostics only on PS/2 systems
SeeAlso: AH=12h,14h
---------------------------------------------
INT 13 - FIXED DISK - CONTROLLER DIAGNOSTICS (XT,AT,XT286,PS)
AH = 14h
Return: CF set on error
AH = status code (see AH=01h)
Note: used for diagnostics only on PS/2 systems
SeeAlso: AH=12h,13h
---------------------------------------------
INT 13 - DISK - GET TYPE (AT,XT2,XT286,CONV,PS)
AH = 15h
DL = drive ID
Return: CF set on error
AH = disk type
00h = disk not there
01h = floppy, no change detection present
02h = floppy with change detection
03h = fixed disk
CX:DX = number of 512-byte sectors
SeeAlso: AH=17h
---------------------------------------------
INT 13 - FLOPPY DISK - CHANGE OF DISK STATUS (AT,XT2,XT286,CONV,PS)
AH = 16h
DL = drive to check
Return: AH = disk change status
00h = no disk change
06h = disk changed
---------------------------------------------
INT 13 - DISK - SET TYPE (AT,XT2,XT286,CONV,PS)
AH = 17h
AL = disk type
00h = no disk
01h = regular disk in regular drive
02h = regular disk in high-capacity drive
03h = high-capacity disk in high-capacity drive
04h = 720K disk in 720K drive
DL = drive ID
Note: I assume that 05h and 06h are 720K in 1.44M and 1.44M in 1.44M
SeeAlso: AH=15h
---------------------------------------------
INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
AH = 18h
DL = drive number
CH = lower 8 bits of number of tracks
CL = sectors per track (bits 0-5)
top 2 bits of number of tracks (bits 6,7)
Return: AH = 00h requested combination supported
01h function not available
0Ch not supported or drive type unknown
80h there is no disk in the drive
ES:DI -> 11-byte parameter table
SeeAlso: AH=05h,07h,17h
---------------------------------------------
INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
AH = 19h
DL = drive
Return: CF set on error
AH = status (see AH=01h)
SeeAlso: AH=11h
---------------------------------------------
INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
AH = 1Ah
AL = defect table count
CL = format modifiers
bit 4: generate periodic interrupt
bit 3: perform surface analysis
bit 2: update secondary defect map
bit 1: ignore secondary defect map
bit 0: ignore primary defect map
DL = drive
ES:BX -> defect table
Return: CF set on error
AH = status (see AH=01h)
Note: if periodic interrupt selected, INT 15h/AH=0Fh is called after each
cylinder is formatted
SeeAlso: AH=07h, INT 15/AH=0Fh
---------------------------------------------
INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
AH = 1Bh
AL = number of record
DL = drive
ES:BX -> buffer for manufacturing header (defect list)
Return: CF set on error
AH = status
Note: manufacturing header format (Defect Map Record format) can be found
in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
---------------------------------------------
INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
AX = 1C0Ah
DL = drive
ES:BX -> buffer for device configuration (drive physical parameter)
Return: CF set on error
AH = status
Note: device configuration format can be found in IBM ESDI Fixed Disk Drive
Adapter/A Technical Reference
---------------------------------------------
INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
AX = 1C0Bh
ES:BX -> buffer for adapter configuration
Return: CF set on error
AH = status
SeeAlso: AX=1C0Ch
---------------------------------------------
INT 13 - ESDI FIXED DISK - GET POS INFORMATION
AX = 1C0Ch
ES:BX -> POS information
Return: CF set on error
AH = status
SeeAlso: AX=1C0Bh
---------------------------------------------
INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
AX = 1C0Eh
CH = low 8 bits of cylinder number
CL = sector number, high two bits of cylinder number in bits 6 and 7
DH = head number
DL = drive number
ES:BX -> ABA number
Return: CF set on error
AH = status
Note: ABA (absolute block address) format can be found in IBM ESDI Adapter
Technical Reference by using it's Device Configuration Status Block
---------------------------------------------
INT 13 - IBMCACHE.SYS - CACHE STATUS
AH = 1Dh
AL = subfunction
01h get status record
DL = drive???
Return: ES:BX -> status record
CF set on error
AH = error code
02h set cache status
ES:BX -> status record
DL = drive???
Return: CF set on error
Format of status record:
Offset Size Description
00h DWORD total number of read requests
04h DWORD total number of hits
08h DWORD number of physical disk reads
0Ch DWORD total number of sectors requested by physical disk reads
10h 6 bytes ???
16h DWORD pointer to start of error list
1Ah DWORD pointer to end of error list
1Eh WORD ???
20h BYTE using extended memory if nonzero
21h BYTE ???
22h 4 BYTEs ASCII version number
26h WORD cache size in K
28h WORD sectors per page
Format of error list:
Offset Size Description
00h DWORD relative block address of bad page
04h BYTE drive
05h BYTE sector bit-map
06h WORD next error
---------------------------------------------
INT 13 - DISK - ??? (Western Digital "Super BIOS")
AH = 20h
???
Return: ???
Note: seems to return some kind of status
---------------------------------------------
INT 13 - QCACHE - DISMOUNT
AX = 20FFh
Return: ???
---------------------------------------------
INT 13 - QCACHE - FLUSH CACHE
AH = 21h
Return: ???
SeeAlso: AH=25h,2Eh
---------------------------------------------
INT 13 - QCACHE - ENABLE/DISABLE CACHE
AH = 22h
AL = 00h disable cache
01h enable cache
---------------------------------------------
INT 13 - QCACHE - SET SECTORS
AH = 24h
BX = number of sectors
Return: ???
---------------------------------------------
INT 13 - QCACHE - SET FLUSH INTERVAL
AH = 25h
BC = interval
Return: ???
SeeAlso: AH=21h,2Eh
---------------------------------------------
INT 13 - QCACHE - INSTALLATION CHECK
AH = 27h
BX = 0000h
Return: BX nonzero if installed
---------------------------------------------
INT 13 - QCACHE - SET BUFFER SIZE
AH = 2Ah
AL = buffer size
Return: ???
---------------------------------------------
INT 13 - QCACHE - SET BUFFERED WRITES
AH = 2Ch
AL = state
00h disable
01h enable
Return: ???
SeeAlso: AH=2Dh
---------------------------------------------
INT 13 - QCACHE - SET BUFFERED READ
AH = 2Dh
AL = state
00h disable
01h enable
Return: ???
SeeAlso: AH=2Ch
---------------------------------------------
INT 13 - QCACHE - SET FLUSH COUNT
AH = 2Eh
BX = flush count
Return: ???
SeeAlso: AH=21h,25h
---------------------------------------------
INT 13 - QCACHE - GET INFO
AH = 30h
AL = what to get
00h system info
01h drive info
DS:DX -> buffer for info
Return: ???
---------------------------------------------
INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
AH = 81h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
AH = 82h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
AH = 83h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
AH = 84h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
AH = 85h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
AH = A0h
SI = 4358h
???
Return: AX = segment of resident code
???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik - FLUSH CACHE
AH = A1h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik - ???
AH = A2h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - Super PC Kwik - ???
AH = B0h
SI = 4358h
???
Return: ???
Note: PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
supports this call
---------------------------------------------
INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
AH = EEh
DL = drive number (80h, 81h)
Return: CF clear
AH = 00h
Notes: the following INT 13 call will interpret the cylinder number as 1024
less than the desired cylinder
flag cleared by all INT 13 calls except AH=EEh
SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
these calls
SeeAlso: AH=F9h,FEh
---------------------------------------------
INT 13 - SWBIOS - INSTALLATION CHECK
AH = F9h
DL = drive number (80h,81h)
Return: CF clear
DX = configuration word
bit 15 set if other SWBIOS extensions available
CF set on error
Note: SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
these calls
SeeAlso: AH=EEh
---------------------------------------------
INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
AH = FEh
DL = drive number (80h, 81h)
Return: CF clear
DX = number of cylinders beyond 1024 on drive
Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024
BIOS without this extension would return count modulo 1024
SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
these calls
SeeAlso: AH=EEh
---------------------------------------------
INT 14 - SERIAL I/O - INITIALIZE USART
AH = 00h
AL = initializing parameters
7 - 6 - 5 4 - 3 2 1 - 0
-BAUD RATE- PARITY STOP WORD
BITS LENGTH
000 110 bd 00 none 0: 1 00: 5
001 150 bd 01 odd 1: 2 01: 6
010 300 bd 11 even 10: 7
011 600 bd 11: 8
100 1200 bd
101 2400 bd
110 4800 bd
111 9600 bd (4800 on PCjr)
DX = port number (0-3)
Return: AH = RS-232 status code bits
0: data ready
1: overrun error
2: parity error
3: framing error
4: break detected
5: transmission buffer register empty
6: transmission shift register empty
7: time out--if set, other bits invalid
AL = modem status bits
0: delta Clear-To-Send
1: delta Data-Set-Ready
2: trailing edge of ring detected
3: change in receive line signal detected
4: Clear-To-Send
5: Data-Set-Ready
6: ring detected
7: receive line signal detected
SeeAlso: AH=05h
---------------------------------------------
INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
AH = 00h
AL = initializing parameters
7 - 6 - 5 4 - 3 2 1 - 0
-BAUD RATE- PARITY STOP WORD
BITS LENGTH
000 19200 bd 00 none 0: 1 00: 5
001 38400 bd 01 odd 1: 2 01: 6
010 300 bd 11 even 10: 7
011 600 bd 11: 8
100 1200 bd
101 2400 bd
110 4800 bd
111 9600 bd (4800 on PCjr)
DX = port number (0-3 or FFh if only performing non-I/O setup)
Return: AH = RS-232 status code bits
0: RDA - input data is available in buffer
1: OVRN - data has been lost
5: THRE - room is available in output buffer
6: TSRE - output buffer empty
AL = modem status bits
3: always 1
7: DCD - carrier detect
SeeAlso: AH=05h
---------------------------------------------
INT 14 - SERIAL I/O - TRANSMIT CHARACTER
AH = 01h
AL = character
DX = port number (0-3)
Return: AX = port status (see AH=00h)
SeeAlso: AH=02h,0Bh
---------------------------------------------
INT 14 - SERIAL I/O - RECEIVE CHARACTER
AH = 02h
DX = port number (0-3)
Return: AL = character received
AH = RS-232 status code (see AH=00h)
Note: will timeout if DSR is not asserted, even if function 03h returns
data ready
SeeAlso: AH=01h
---------------------------------------------
INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
AH = 02h
DX = port number (0-3)
Return: AL = character received
AH = 00h
---------------------------------------------
INT 14 - SERIAL I/O - GET USART STATUS
AH = 03h
DX = port number (0-3)
Return: AX = port status code (see AH=00h)
---------------------------------------------
INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE,PS)
AH = 04h
AL = break status
00h if break
01h if no break
BH = parity
00h no parity
01h odd parity
02h even parity
03h stick parity odd
04h stick parity even
BL = number of stop bits
00h one stop bit
01h two stop bits (1.5 if 5 bit word length)
CH = word length
00h 5 bits
01h 6 bits
02h 7 bits
03h 8 bits
CL = bps rate
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
DX = port number
Return: AX = port status code (see AH=00h)
---------------------------------------------
INT 14 - FOSSIL - INITIALIZE DRIVER
AH = 04h
DX = port number
optionally BX=4F50h
ES:CX -> byte to be set upon ^C
Return: AX = 1954h (if successful)
BL = maximum function number supported (excluding 7Eh and above)
BH = revision of FOSSIL supported
DTR is raised
Note: the word at offset 6 in the interrupt handler contains 1954h, and the
following byte contains the maximum function number supported
---------------------------------------------
INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
AH = 05h
AL = 00h read modem control register
Return: BL = modem control register (see below)
AH = status
AL = 01h write modem control register
BL = modem control register
bit 0: data terminal ready
bit 1: request to send
bit 2: OUT1
bit 3: OUT2
bit 4: LOOP
bits 5-7 reserved
Return: AX = status
DX = port number
SeeAlso: AH=00h
---------------------------------------------
INT 14 - FOSSIL - DEINITIALIZE DRIVER
AH = 05h
DX = port number
Return: none
DTR is not affected
SeeAlso: AH=00h
---------------------------------------------
INT 14 - FOSSIL - RAISE/LOWER DTR
AH = 06h
DX = port
AL = DTR state to be set
00h = lower
01h = raise
SeeAlso: AH=1Ah
---------------------------------------------
INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
AH = 07h
Return: AL = timer tick interrupt number
AH = ticks per second on interrupt number in AL
DX = approximate number of milliseconds per tick
SeeAlso: AH=16h
---------------------------------------------
INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
AH = 08h
DX = port number
SeeAlso: AH=09h
---------------------------------------------
INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
AH = 09h
DX = port number
SeeAlso: AH=08h,0Ah
---------------------------------------------
INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
AH = 0Ah
DX = port number
SeeAlso: AH=09h
---------------------------------------------
INT 14 - FOSSIL - TRANSMIT NO WAIT
AH = 0Bh
AL = character
DX = port number
Return: AX = 0000h character not accepted
= 0001h character accepted
SeeAlso: AH=01h
---------------------------------------------
INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
AH = 0Ch
DX = port number
Return: AX = FFFFh character not available
AX = 00xxh character xx available
---------------------------------------------
INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
AH = 0Dh
Return: AX = FFFFh character not available
= xxyyh standard IBM-style scan code
SeeAlso: AH=0Eh
---------------------------------------------
INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
AH = 0Eh
Return: AX = xxyyh standard IBM-style scan code
SeeAlso: AH=0Dh
---------------------------------------------
INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
AH = 0Fh
AL = bit mask describing flow control requested
0: xon/xoff on transmit (watch for xoff while sending)
1: CTS/RTS (CTS on transmit/RTS on receive)
2: reserved
3: xon/xoff on receive (send xoff when buffer near full)
4-7: all 1
DX = port number
---------------------------------------------
INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
AH = 10h
AL = bit mask
0: enable/disable ^C/^K checking
1: enable/disable the transmitter
DX = port number
---------------------------------------------
INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
AH = 11h
DH = row
DL = column
Note: this is the same as INT 10/AH=02h
SeeAlso: AH=12h
---------------------------------------------
INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
AH = 12h
Return: DH = row
DL = column
Note: this is the same as INT 10/AH=03h
SeeAlso: AH=11h
---------------------------------------------
INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
AH = 13h
AL = character
Note: should not be called if it is unsafe to call DOS
SeeAlso: AH=15h
---------------------------------------------
INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
AH = 14h
AL = 01h enable watchdog
00h disable watchdog
DX = port number
---------------------------------------------
INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
AH = 15h
AL = character
SeeAlso: AH=13h
---------------------------------------------
INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
AH = 16h
AL = function
00h = delete
01h = add
ES:DX -> routine to call
Return: AX = 0000h successful
0001h unsuccessful
SeeAlso: AH=07h
---------------------------------------------
INT 14 - FOSSIL - REBOOT SYSTEM
AH = 17h
AL = method
00h = cold boot
01h = warm boot
---------------------------------------------
INT 14 - FOSSIL - READ BLOCK
AH = 18h
CX = maximum number of characters to transfer
DX = port number
ES:DI -> user buffer
Return: AX = number of characters transfered
SeeAlso: AH=19h
---------------------------------------------
INT 14 - FOSSIL - WRITE BLOCK
AH = 19h
CX = maximum number of characters to transfer
DX = port number
ES:DI -> user buffer
Return: AX = number of characters transfered
SeeAlso: AH=18h
---------------------------------------------
INT 14 - FOSSIL - BREAK BEGIN OR END
AH = 1Ah
AL = 00h stop sending 'break'
01h start sending 'break'
DX = port number
SeeAlso: AH=06h
---------------------------------------------
INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
AH = 1Bh
DX = port number
CX = size of user buffer
ES:DI -> user buffer for driver info (see below)
Return: AX = number of characters transferred
Format of driver info:
Offset Size Description
00h WORD size of structure in bytes
02h BYTE FOSSIL spec driver conforms to
03h BYTE revision level of this specific driver
04h DWORD pointer to ASCIZ identification string
08h WORD size of the input buffer
0Ah WORD number of bytes left in buffer
0Ch WORD size of the output buffer
0Eh WORD number of bytes left in buffer
10h BYTE width of screen
11h BYTE length of screen
12h BYTE actual baud rate, computer to modem
---------------------------------------------
INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
AH = 7Eh
AL = code assigned to external application
ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Fh
---------------------------------------------
INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
AH = 7Fh
AL = code assigned to external application
ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Eh
---------------------------------------------
INT 14 - COURIERS.COM - INSTALLATION CHECK
AH = 80h
Return: AH = E8h if loaded
Note: COURIERS is a TSR utility by PC Magazine
---------------------------------------------
INT 14 - COURIERS.COM - CHECK IF PORT BUSY
AH = 81h
AL = port number (1-4)
Return: AH = 00h port available
01h port exists but already in use
02h port nonexistent
Note: COURIERS is a TSR utility by PC Magazine
SeeAlso: AH=83h,8Dh
---------------------------------------------
INT 14 - COURIERS.COM - CONFIGURE PORT
AH = 82h
AL = port number (1-4)
BX = speed (bps)
CX = bit flags
bit 0: enable input flow control
bit 1: enable output flow control
bit 2: use X.PC protocol (not yet implemented)
SeeAlso: AH=8Ch
---------------------------------------------
INT 14 - COURIERS.COM - START INPUT
AH = 83h
ES:BX -> circular input buffer
CX = length of buffer
(should be at least 128 bytes if input flow control enabled)
SeeAlso: AH=87h,8Dh
---------------------------------------------
INT 14 - COURIERS.COM - READ CHARACTER
AH = 84h
Return: ZF set if no characters available
ZF clear
AL = character
AH = modem status bits
bit 7: set on input buffer overflow
SeeAlso: AH=86h,89h
---------------------------------------------
INT 14 - COURIERS.COM - FLUSH PENDING INPUT
AH = 85h
SeeAlso: AH=88h
---------------------------------------------
INT 14 - COURIERS.COM - START OUTPUT
AH = 86h
ES:BX -> output buffer
CX = length of output buffer
SeeAlso: AH=83h
---------------------------------------------
INT 14 - COURIERS.COM - OUTPUT STATUS
AH = 87h
Return: AX = number of unsent characters
---------------------------------------------
INT 14 - COURIERS.COM - ABORT OUTPUT
AH = 88h
SeeAlso: AH=85h
---------------------------------------------
INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
AH = 89h
CL = character to send
SeeAlso: AH=84h
---------------------------------------------
INT 14 - COURIERS.COM - SEND BREAK
AH = 8Ah
---------------------------------------------
INT 14 - COURIERS.COM - SET SPEED
AH = 8Ch
BX = speed in bps
SeeAlso: AH=82h
---------------------------------------------
INT 14 - COURIERS.COM - DECONFIGURE PORT
AH = 8Dh
SeeAlso: AH=82h
---------------------------------------------
INT 15 - CASSETTE - TURN ON MOTOR (PC,Jr)
AH = 00h
Return: CF set on error, AH = 86h if no cassette present
---------------------------------------------
INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
AH = 00h
Return: CX = signed X count
DX = signed Y count
---------------------------------------------
INT 15 - VMiX v2+ - INSTALLATION CHECK???
AH = 00h
Return: DX = 0798h???
---------------------------------------------
INT 15 - CASSETTE - TURN OFF MOTOR (PC,Jr)
AH = 01h
Return: CF set on error, AH = 86h if no cassette present
---------------------------------------------
INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
AH = 01h
AL = NVRAM location (00h to 3Fh)
BL = NVRAM data value
Return: AH = return code
00h OK
01h address bad
02h write error
SeeAlso: AH=02h"Amstrad"
Format of NVRAM:
Offset Size Description
00h BYTE time of day: seconds
01h BYTE alarm time: seconds
02h BYTE time of day: minutes
03h BYTE alarm time: minutes
04h BYTE time of day: hours
05h BYTE alarm time: hours
06h BYTE day of week, 1 = Sunday
07h BYTE day of month
08h BYTE month
09h BYTE year mod 100
0Ah BYTE RTC status register A
bit 7: set if date/time being updated
6-4: time base speed, default 010 = 32768 Hz
3-0: interrupt rate selection, default 0110 = 1024 Hz
0Bh BYTE RTC status register B
bit 7: clear if normal update, set if abort update
6: periodic interrupt enable
5: alarm interrupt enable
4: update end interrupt enable
3: square wave enable
2: date mode (clear = BCD, set = binary)
1: 24-hour format
0: daylight saving time enable
0Ch BYTE RTC status register C (read-only)
bit 7: IRQF flag
6: PF flag
5: AF flag
4: UF flag
0Dh BYTE RTC status register D
bit 7: battery good
0Eh 6 BYTEs time and date machine last used
14h BYTE user RAM checksum
15h WORD Enter key scancode/ASCII code
17h WORD Forward delete key scancode/ASCII code
19h WORD Joystick fire button 1 scancode/ASCII code
1Bh WORD Joystick fire button 2 scancode/ASCII code
1Dh WORD mouse button 1 scancode/ASCII code
1Fh WORD mouse button 2 scancode/ASCII code
21h BYTE mouse X scaling factor
22h BYTE mouse Y scaling factor
23h BYTE initial VDU mode and drive count
24h BYTE initial VDU character attribute
25h BYTE size of RAM disk in 2K blocks
26h BYTE initial system UART setup byte
27h BYTE initial external UART setup byte
28h 24 BYTEs available for user application
Note: bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
the clock chip
---------------------------------------------
INT 15 - VMiX - I/O CHANNEL OBJECT MANAGER
AH = 01h
STACK: WORD object ID of requestor
DWORD pointer to name of requested method
WORD arg1
WORD arg2
WORD arg3
WORD arg4
Return: DX:AX??? -> IRP structure or 0000h:0000h
---------------------------------------------
INT 15 - CASSETTE - READ DATA BLOCKS (PC,Jr)
AH = 02h
CX = count of bytes
ES:BX -> data area
Return: CF set on error
AH = status
01h CRC error
02h bad tape signals
04h no data
80h invalid command
86h no cassette present
DX = count of bytes read
ES:BX = pointer past last byte read
---------------------------------------------
INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
AH = 02h
AL = NVRAM location (00h to 3Fh)
Return: AH = return code
00h OK
01h address bad
02h checksum error
AL = NVRAM data value
SeeAlso: AH=01h"Amstrad"
---------------------------------------------
INT 15 - VMiX - MEMORY OBJECT MANAGER
AH = 02h
STACK: WORD object ID of requestor
DWORD pointer to name of requested method
WORD arg1
WORD arg2
WORD arg3
WORD arg4
WORD arg5
Return: DX:AX??? = pointer to memory block
---------------------------------------------
INT 15 - CASSETTE - WRITE DATA BLOCKS (PC,Jr)
AH = 03h
CX = count of bytes to write
ES:BX -> data area
Return: CF set on error
AH = status (see AH=02h)
ES:BX = pointer past last byte written
CX = 0
---------------------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
AH = 03h
AL = value (I,R,G,B bits)
SeeAlso: AH=04h"Amstrad"
---------------------------------------------
INT 15 - VMiX - PROMPTED CONSOLE INPUT
AH = 03h
STACK: DWORD pointer to ASCII prompt
WORD field outline character
WORD length of input field
DWORD address of pointer to input buffer
WORD number of characters input
Return: AX = length of input (input buffer is padded with blanks)
---------------------------------------------
INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
AH = 04h
ES:DI -> results buffer length 20h for System Parameter Table
DS = segment containing ABIOS RAM extensions (zero if none)
Return: AH = 00h success: results at ES:DI
CF set on failure
SeeAlso: AH=05h"ABIOS",C1h
Format of ABIOS System Parameter Table:
Offset Size Description
00h DWORD FAR address of ABIOS Common Start Routine
04h DWORD FAR address of ABIOS Interrupt Routine
08h DWORD FAR address of ABIOS Time-out Routine
0Ch WORD number of bytes of stack required by this ABIOS implementation
0Eh 16 BYTEs reserved
1Eh WORD number of entries in initialisation table
---------------------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
AH = 04h
AL = value (RDSEL1 and RDSEL0)
SeeAlso: AH=03h"Amstrad",05h"Amstrad"
---------------------------------------------
INT 15 - VMiX - VPRINTF
AH = 04h
STACK: DWORD control string
DWORD array of arguments
---------------------------------------------
INT 15 - SYSTEM - BUILD ABIOS INITIALISATION TABLE (PS)
AH = 05h
ES:DI -> results buffer length (18h * Number_of_Entries)
DS = segment containing ABIOS RAM extensions (zero if none)
Return: AH = 00h success: results at ES:DI
CF set on failure
SeeAlso: AH=04h"ABIOS",C1h
Format of one entry of ABIOS Initialisation Table:
Offset Size Description
00h WORD device ID
02h WORD number of Logical IDs
04h WORD Device Block length (zero for ABIOS patch or extension)
06h DWORD -> init routine for Device Block and Function Transfer Table
0Ah WORD request block length
0Ch WORD Function Transfer Table length (zero for a patch)
0Eh WORD Data Pointers length (in Common Data Area)
10h BYTE secondary device ID (hardware level this ABIOS ver supports)
11h BYTE revision (device driver revision level this ABIOS supports)
12h 6 BYTEs reserved
---------------------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
AH = 05h
AL = value (I,R,G,B bits)
SeeAlso: AH=04h"Amstrad"
---------------------------------------------
INT 15 - VMiX - GET PROCESS ID OF CURRENT PROCESS
AH = 05h
Return: AX = process ID
---------------------------------------------
INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
AH = 06h
Return: BX = version number
---------------------------------------------
INT 15 - VMiX - GET POINTER TO PROCESS CONTROL BLOCK
AH = 06h
STACK: WORD process ID
Return: DX:AX??? -> process control block
---------------------------------------------
INT 15 - VMiX - GET POINTER TO OBJECT CONTROL BLOCK
AH = 07h
STACK: WORD object type
Return: DX:AX??? -> object control block
---------------------------------------------
INT 15 - VMiX - GET CHANNEL CONTROL BLOCK
AH = 08h
STACK: WORD channel ID
Return: DX:AX??? -> channel control block
---------------------------------------------
INT 15 - VMiX - GET ID OF QUEUED ELEMENT
AH = 09h
STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
WORD subqueue ID
Return: AX = ID
---------------------------------------------
INT 15 - VMiX - GET ID OF NEXT QUEUED ELEMENT
AH = 0Ah
STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
WORD ID of current element in queue chain
Return: AX = ID of next element
---------------------------------------------
INT 15 - VMiX - GET TOTAL NUMBER OF ACTIVE PROCESSES
AH = 0Bh
Return: AX = number of active processes
---------------------------------------------
INT 15 - VMiX - GET POINTER TO PROCESS TSS STACK
AH = 0Ch
STACK: WORD process ID
Return: DX:AX??? -> TSS stack store
---------------------------------------------
INT 15 - VMiX - START A CHILD PROCESS JOB SHELL
AH = 0Dh
STACK: DWORD ASCIZ string starting with requested I/O channel and
followed by standard VMiX shell command string
Return: AX = status
SeeAlso: AH=0Eh"VMIX"
---------------------------------------------
INT 15 - VMiX - TERMINATE PROCESS
AH = 0Eh
STACK: WORD process ID
Return: AX = status
SeeAlso: AH=0Dh"VMIX"
---------------------------------------------
INT 15 - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
AH = 0Fh
AL = phase code
00h reserved
01h surface analysis
02h formatting
Return: CF clear if formatting should continue, set if it should terminate
Note: called during ESDI drive formatting after each cylinder is completed
SeeAlso: INT 13/AH=1Ah
---------------------------------------------
INT 15 - VMiX - GET KEY FIELD OF QUEUED ELEMENT
AH = 0Fh
STACK: WORD queue ID (0 = process queue, 1 = object q, 3 = type q)
WORD ID of element in queue chain
Return: AX = key
---------------------------------------------
INT 15 - VMiX - EXECUTE FUNCTION IN PROTECTED MODE
AH = 10h
STACK: DWORD pointer to function
N WORDs function args
Return: ???
---------------------------------------------
INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
AX = 1000h
Return: after other processes run
---------------------------------------------
INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
AX = 1001h
BX = number of bytes to allocate
Return: ES:DI -> block of memory
SeeAlso: AX=1002h,DE0Ch
---------------------------------------------
INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
AX = 1002h
ES:DI -> previously allocated block
Return: block freed
SeeAlso: AX=1001h,DE0Dh
---------------------------------------------
INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
AX = 1003h
BH = attribute
BL = character
DX = segment of object handle for window
Note: BX=0 does not display anything, it only positions the hardware cursor
---------------------------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AH = 10h
AL = 04h thru 12h
Return: pops up "Programming error" window in DV 2.x
---------------------------------------------
INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1013h
ES:DI -> FAR service routine
Return: BX = bit mask indicating which bit was allocated
0000h if no more bits available
SeeAlso: AX=1014h,1015h
---------------------------------------------
INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1014h
BX = bit mask from INT 15/AX=1013h
SeeAlso: AX=1013h,1015h
---------------------------------------------
INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
AX = 1015h
BX = bit mask for interrupts to post
Return: indicated routines will be called: (DV 2.0x) at next task switch
(DV 2.2x) immediately
SeeAlso: AX=1013h,1014h
---------------------------------------------
INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
AX = 1016h
ES:DI = possible object handle
Return: BX = FFFFh if ES:DI is a valid object handle
0000h if ES:DI is not
SeeAlso: AX=DE14h
---------------------------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AX = 1017h
Return: pops up "Programming error" window in DV 2.x
---------------------------------------------
INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
AX = 1018h
BH = column
BL = row
ES = segment of object handle for window below which to search
0000h = start search with topmost window
Return: ES = segment of object handle for window which is visible at the
indicated position, or covered by indicated window
---------------------------------------------
INT 15 - TopView - "SOUND" - MAKE TONE
AX = 1019h
BX = frequency in Hertz
CX = duration in clock ticks (18.2 ticks/sec)
Return: immediately, tone continues to completion
Notes: if another tone is already playing, the new tone does not start until
completion of the previous one. In DV 2.00, it is possible to enqueue
about 32 tones before the process is blocked until a note completes.
in DV 2.00, the lowest tone allowed is 20 Hz
---------------------------------------------
INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
AX = 101Ah
Return: stack switched
SeeAlso: AX=1025h
---------------------------------------------
INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
AX = 101Bh
Return: task-switching temporarily disabled
Note: will not task-switch until END CRITICAL REGION (AX = 101Ch) called
SeeAlso: AX=101Ch,DE13h
---------------------------------------------
INT 15 - TopView - "ENDC" - END CRITICAL REGION
AX = 101Ch
Return: task-switching enabled
SeeAlso: AX=101Bh,DE13h
---------------------------------------------
INT 15 - TopView - "STOP" - STOP TASK
AX = 101Dh
ES = segment of object handle for task to be stopped
(== handle of main window for that task)
Return: indicated task will no longer get CPU time
Note: at least in DV 2.00, this function is ignored unless the indicated task
is the current task.
SeeAlso: AX=101Eh,102Bh
---------------------------------------------
INT 15 - TopView - "START" - START TASK
AX = 101Eh
ES = segment of object handle for task to be started
(== handle of main window for that task)
Return: indicated task is started up again
SeeAlso: AX=101Dh,102Bh
---------------------------------------------
INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
AX = 101Fh
BX = bit fields
bits 0-12: number of characters to display
bits 13,14: which mouse button may be pressed to remove window
00 = either
01 = left
10 = right
11 = either
bit 15: beep if 1
DS:DI -> text of message
CH = width of error window (0 = default)
CL = height of error window (0 = default)
DX = segment of object handle
Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
Note: window remains on-screen until ESC or indicated mouse button is pressed
---------------------------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV 2.0x
AX = 1020h
Return: pops up "Programming error" window in DV 2.0x
---------------------------------------------
INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
AX = 1021h
BX = segment of object handle for task to interrupt
DX:CX -> FAR routine to jump to next time task is run
Return: nothing
Note: the current ES, DS, SI, DI, and BP are passed to the FAR routine
---------------------------------------------
INT 15 - TopView - "GETVER" - GET VERSION
AX = 1022h
BX = 0
Return: BX nonzero, TopView or compatible loaded
(BL = major version, BH = minor version)
Notes: TaskView returns BX = 0001h, DESQview 2.0 returns BX = 0A01h
---------------------------------------------
INT 15 - TopView - "POSWIN" - POSITION WINDOW
AX = 1023h
BX = segment of object handle for parent window within which to
position the window (0 = full screen)
ES = segment of object handle for window to be positioned
DL = bit flags
bits 0,1: horizontal position
00 = current
01 = center
10 = left
11 = right
bits 2,3: vertical position
00 = current
01 = center
10 = top
11 = bottom
bit 4: don't redraw screen if set
bits 5-7 not used
CH = number of columns to offset from position specified by DL
CL = number of rows to offset from position specified by DL
Return: nothing
---------------------------------------------
INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
AX = 1024h
BX = segment of object handle for window
(0 = use default)
Return: ES:DI -> virtual screen
CX = size of virtual screen in bytes
DL = 00h text screen
01h graphics screen
SeeAlso: INT 10/AH=FEh
---------------------------------------------
INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
AX = 1025h
Return: stack switched back
Note: call only after having switched to private stack
SeeAlso: AX=101Ah
---------------------------------------------
INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
AH = 10h
AL = 26h thru 2Ah
Return: pops up "Programming error" window in DV 2.x
---------------------------------------------
INT 15 - DESQview 2.0 (TopView???) - "POSTTASK" - AWAKEN TASK
AX = 102Bh
BX = segment of object handle for task
Return: nothing
SeeAlso: AX=101Dh,101Eh
---------------------------------------------
INT 15 - DESQview 2.0 (TopView???) - START NEW APPLICATION IN NEW PROCESS
AX = 102Ch
ES:DI -> contents of .PIF/.DVP file (see below)
BX = size of .PIF/.DVP info
Return: BX = segment of object handle for new task
0000h on error
Format of .PIF/.DVP file:
Offset Size Description
00h WORD reserved (0)
02h 30 BYTEs program title (blank-padded)
20h WORD maximum memory to allocate to partition in K
22h WORD minimum memory required in K
24h 64 BYTEs ASCIZ program pathname
64h BYTE default drive letter ('A',...)
65h 64 BYTEs ASCIZ default directory name
A5h 64 BYTEs ASCIZ program parameters
E5h BYTE initial screen mode (0-7)
E6h BYTE number of text pages used
E7h BYTE number of first interrupt to save
E8h BYTE number of last interrupt to save
E9h BYTE rows in virtual screen buffer
EAh BYTE columns in virtual screen buffer
EBh BYTE initial window position, row
ECh BYTE initial window position, column
EDh WORD system memory in K
EFh 64 BYTEs ASCIZ shared program name
12Fh 64 BYTEs ASCIZ shared program data file
16Fh BYTE flags1
bit 7: writes text directly to screen
bit 6: runs in foreground only
bit 5: uses math coprocessor
bit 4: accesses system keyboard buffer directly
bits 3-1: reserved (0)
bit 0: swappable
170h BYTE flags2
bit 6: uses command-line parameters in field at A5h
bit 5: swaps interrupt vectors
---information unique to .DVP files---
171h 2 BYTEs keys to use on open menu
173h WORD size of script buffer in bytes
175h WORD automatically give up CPU after this many tests for keyboard
input in one clock tick (0 = never)
177h BYTE nonzero = "uses own colors"
178h BYTE nonzero if application swappable
179h 3 BYTEs reserved (0)
17Ch BYTE nonzero to automatically close on exit
17Dh BYTE nonzero if copy-protect floppy is required
---information unique to DESQview 2.0+---
17Eh BYTE .DVP version number
00h DESQview 1.2+
01h DESQview 2.0+
02h DESQview 2.2+
17Fh BYTE reserved (0)
180h BYTE initial number of rows in physical window
181h BYTE initial number of columns in physical window
182h WORD maximum expanded memory to allow, in K
184h BYTE flags3
bit 7: automatically assign window position
bit 5: maximum memory value has been specified
bit 4: disallow "Close" command
bit 3: foreground-only when doing graphics
bit 2: don't virtualize
185h BYTE keyboard conflict level (0-4)
186h BYTE number of graphics pages used
187h WORD extra system memory size
189h BYTE initial screen mode (FFh = default)
---information unique to DESQview 2.2+---
18Ah BYTE serial port usage
FFh uses all serial ports
00h no serial ports
01h only COM1
02h only COM2
18Bh BYTE flags4
bit 7: automatically close application on exit if .COM or .EXE
specified
bit 6: swappable if not using serial ports
bit 4: start program in background (v2.26+)
bit 3: virtualize text
bit 2: virtualize graphics
bit 1: share CPU when foreground
bit 0: share EGA when foreground and zoomed
18Ch BYTE protection level for 386 machines
18Dh 19 BYTEs reserved (0)
---------------------------------------------
INT 15 - DESQview 2.0 - KEYBOARD MOUSE CONTROL
AX = 102Dh
BL = subfunction
00h determine whether using keyboard mouse
Return: BL = 00h using real mouse
01h using keyboard mouse
01h turn keyboard mouse on
02h turn keyboard mouse off
---------------------------------------------
INT 15 - TopView commands
AH = 11h
AL = various (except 17h)
Note: in DESQview 2.x, these function calls are identical to AH=DEh, so
see those below
SeeAlso: AH=DEh
---------------------------------------------
INT 15 - VMiX - EXECUTE SHELL SYSTEM COMMANDS
AH = 11h
STACK: DWORD pointer to ASCIZ string containing and VMiX shell
request (max len = 127)
Return: AX = status
---------------------------------------------
INT 15 - DESQview 2.2+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
AX = 1117h
BX = 0000h get current mapping context without setting
nonzero set new mapping context
Return: BX = mapping context in effect before call
Notes: this function differs from AX = DE17h for DESQview v2.20 through 2.25
mapping contexts determine conventional-memory addressability; setting
a mapping context ensures that the associated program and data areas
are in memory for access. Usable by drivers, TSRs and shared
programs.
Caller need not be running under DESQview
---------------------------------------------
INT 15 - DESQview - XDV.COM - INSTALLATION CHECK
AX = 11DEh
Return: CF clear if installed
AX = segment at which XDV is located
---------------------------------------------
INT 15 - VMiX - PUT PROCESS TO SLEEP
AH = 12h
STACK: WORD process ID
Return: AX = status
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
AH = 12h
BH = 00h
BL = which handle to return
00h handle in DWORD on top of stack
01h current task's window handle
02h given task's mailbox handle (task's handle on stack)
03h current task's mailbox handle
04h given task's keyboard handle (task's handle on stack)
05h current task's keyboard object handle
06h given task's OBJECTQ handle (task's handle on stack)
07h current task's OBJECTQ handle
08h \
thru > return 0000:0000
10h /
Return: DWORD on top of stack is object handle
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
AH = 12h
BH = 01h
BL = object
00h (DV 2.0x only) handle is DWORD on top of stack
01h (DV 2.0x only) use task's window handle
02h (DV 2.0x only) given task's mailbox (task's handle on stack)
03h (DV 2.0x only) current task's mailbox
04h (DV 2.0x only) given task's keyboard (task's handle on stack)
05h (DV 2.0x only) current task's keyboard object
08h WINDOW class
09h MAILBOX class
0Ah KEYBOARD class
0Bh TIMER object (counts down 32-bit time in 10ms increments)
0Fh POINTER object
10h PANEL object
STACK: (if window object or WINDOW class)
DWORD address to jump to (no new task if high word == 0)
DWORD (reserved) 0 = non-task window, FFFFh = task window
DWORD bytes for task's private stack (FFFFh == default of 0100h)
DWORD bytes system memory allocation (0 == none, -1 == default)
DWORD window size, columns
DWORD window size, rows
DWORD length of window title
DWORD address of window title
Return: DWORD on top of stack is new object handle
Note: if a new task is created, it is started with
AX = BX = CX = SI = DI = BP = 0
DX = segment of parent's object handle
DS = ES = SS = segment of private stack (and new task's handle)
SeeAlso: AH=12h/BH=02h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
AH = 12h
BH = 02h
BL = object
00h handle in DWORD on top of stack
window: close window and free
timer: free timer
panel: free panel object
pointer: free pointer
01h task's window handle - kills task, never returns
02h given task's mailbox (task's handle on top of stack)
03h current task's mailbox
04h given task's keyboard (task's handle on top of stack)
05h current task's keyboard object
SeeAlso: AH=12h/BH=01h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
AH = 12h
BX = 0300h
STACK: DWORD handle of panel object
Return: STACK: DWORD length of directory
DWORD address of directory
Format of panel file:
Offset Size Description
00h 2 BYTEs C0h C3h
02h BYTE number of panels in file
03h for each panel in file:
8 BYTEs blank-padded panel name
DWORD panel offset in file
WORD panel length
data for panels (each consists of one or more window/query/manager
streams)
first byte of each panel must be 1Bh, fifth byte must be E5h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "ADDR" - GET OBJECT HANDLE
AH = 12h
BH = 03h
BL = object
00h handle in DWORD on top of stack
02h sender of last msg read from mailbox (task's handle on stack)
03h sender of last msg read from current task's mailbox
Return: DWORD on stack is handle
SeeAlso: AH=12h/BH=00h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
AH = 12h
BX = 0400h
STACK: DWORD timer's handle
Return: STACK: DWORD time in 1/100 sec since midnight when timer expires
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD
AH = 12h
BH = 04h
BL = object
00h handle is DWORD on top of stack
window: read next logical line
mailbox: wait for and get next message
pointer: wait for and get next message
01h read the next logical line from task's default window
02h get next message from mailbox (task's handle on top of stack)
03h get next message from current task's mailbox
04h get the next input from keyboard (handle on top of stack)
05h get the next input from task's default keyboard
06h wait for input from any object in OBJECTQ (handle on stack)
07h wait for input from any object in task's default OBJECTQ
Return: STACK: (if objectq) DWORD handle of object with input
(otherwise) DWORD number of bytes
DWORD address
SeeAlso: AH=12h/BH=05h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
AH = 12h
BX = 0400h
STACK: DWORD handle of panel object
DWORD window's handle or 0
DWORD length of panel name
DWORD pointer to panel name
Return: STACK: DWORD handle of created keyboard or 0
DWORD handle of window which was used
Notes: status of APPLY may be checked with STATUS message
panel MUST have the following format
first byte must be 1Bh (i.e. must start with a stream)
first opcode in stream must be E5h
single byte arg of opcode is interpreted thus:
bit 7 \ 11 means create new window
bit 6 / 10 means create new field table for existing window
01 means use existing window and field table
bit 5 if set, panel contains a field table
(creates a new keyboard and puts it in field mode)
bit 4 if set, panel contains input fields
bit 3 if set, panel contains select fields but no input fields
--------------------------------------------
INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
AH = 12h
BH = 05h
BL = object
00h handle is DWORD on top of stack
timer: start timer to end at a specified time
pointer: move pointer icon to specified position
02h send message by value/status=0 to mbox (task's handle on stack)
03h send message by value/status=0 to current task's mailbox
04h add input buffer to KEYBOARD queue (handle on top of stack)
05h add input buffer to task's default KEYBOARD queue
06h add an object to OBJECTQ (handle on top of stack)
07h add an object to task's default OBJECTQ
STACK: (if mailbox) DWORD length
DWORD address
(if keyboard) DWORD status (such as scan code)
DWORD length
DWORD address
(if objectq) DWORD handle of object to add
(if timer) DWORD 1/100ths seconds since midnight (actually
only accurate to 1/18 sec)
(if pointer) DWORD column relative to origin of window
DWORD row relative to origin of window
SeeAlso: AH=12h/BH=04h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
AH = 12h
BH = 05h
BL = object
00h DWORD on top of stack is window handle
01h write string to task's default window
STACK: DWORD object handle if handle passed on stack
DWORD total length of string (high word == 0)
DWORD address of string to display
Return: indicated actions performed
a. non-control characters are displayed
b. CR/LF/BS/Tab cause the usual cursor movement
c. ESC starts a data structure with additional commands
Note: service routine will pop stack
Data Structure:
MAGIC DB 1Bh
MODE DB ? ; 00h, 01h, 10h, 14h-1Fh legal
LENGTH DW ? ; length of remainder in bytes
var-length fields follow, each an OPCODE followed by
zero or more args
MODE 00h (set or display values) "WINDOW STREAM"
Opcodes:args
00h display 20h blanks with the default attribute
01h-1Fh display OPCODE blanks with the default attribute
20h display char with default attribute 20h times
BYTE char to repeat
21h-3Fh display char with default attribute OPCODE-20h times
BYTE char to repeat
40h display 20h blanks with specified attribute
BYTE attribute of blanks
41h-5Fh display OPCODE-40h blanks with specified attribute
BYTE attribute of blanks
60h display next 20h characters
20h BYTES characters to display
61h-7Fh display next OPCODE-60h characters
N BYTES characters to display
80h-87h display N blanks with default attribute
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
88h-8Fh display N copies of the character
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE character to repeat
90h-97h display N blanks with specified attribute
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE attribute
98h-9FH display string at logical cursor pos
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
N BYTES string to display
A0h set logical cursor row
BYTE row number (0 is top)
A1h set logical cursor column
BYTE column number (0 is leftmost)
A2h set top edge of scrolling region
BYTE row
A3h set left edge of scrolling region
BYTE column
A4h set row of physical window position
BYTE line
A5h set column of physical window position
BYTE column
A6h set height of physical window
BYTE #rows
A7h set width of physical window
BYTE #columns
A8h set viewport row
BYTE row
A9h set viewport column
BYTE column
AAh set virtual screen height
BYTE rows
ABh set virtual screen width
BYTE columns
ACh-AEh unused
AFh set compatible/preferred video modes
BYTE compatibility/preference mask
bit 7 compatible with monochrome
bit 6 compatible with color text, EGA/VGA graphics
bit 5 compatible with medium-resolution CGA graphics
bit 4 compatible with high-resolution CGA graphics
bit 3 prefer monochrome
bit 2 prefer color text, EGA/VGA graphics
bit 1 prefer medium-resolution CGA graphics
bit 0 prefer high-resolution CGA graphics
B0h move logical cursor down
BYTE #rows (signed, negative values move up)
B1h move logical cursor right
BYTE #cols (signed, negative values move left)
B2h shift top edge of scrolling region
BYTE #rows (signed)
B3h shift left edge of scrolling region
BYTE #cols (signed)
B4h shift window down
BYTE #lines (signed)
B5h shift window right
BYTE #columns (signed)
B6h expand physical window vertically
BYTE #lines (signed)
B7h expand physical window horizontally
BYTE #columns (signed)
B8h adjust viewport row
BYTE #rows (signed)
B9h adjust viewport column
BYTE #columns (signed)
BAh adjust virtual screen height
BYTE #rows to increase (signed)
BBh adjust virtual screen width
BYTE #cols to increase (signed)
BCh-BFh unused
C0h set logical cursor position
BYTE row number (0 is top border)
BYTE column number (0 is left border)
C1h set top left corner of scrolling region
BYTE row
BYTE column
C2h set window pos
BYTE upper left row (no top border if 0)
BYTE upper left column (no left border if 0)
C3h set current window size
BYTE #rows
BYTE #cols
C4h set upper left corner of viewport (portion of virtual screen
displayed in window)
BYTE row
BYTE column
C5h set size of virtual screen
BYTE #rows
BYTE #cols
C6h unused
C7h unused
C8h set logical cursor relative to current position
BYTE number of rows to move down (signed)
BYTE number of columns to move right (signed)
C9h shift top left corner of scrolling region
BYTE #rows (signed)
BYTE #cols (signed)
CAh set window pos relative to current position
BYTE number of rows to shift down (signed)
BYTE number of columns to shift right (signed)
CBh set window size relative to current size
BYTE number of rows to expand (signed)
BYTE number of cols to expand (signed)
CCh shift viewport relative to current position
BYTE rows to shift (signed)
BYTE cols to shift (signed)
CDh resize virtual screen
BYTE #rows to expand (signed)
BYTE #cols to expand (signed)
CEh scroll text when using E8h-EBh/F8h-FBh opcodes (default)
CFh scroll attributes when using E8h-EBh/F8h-FBh opcodes
D0h allow window frame to extend beyond screen
D1h always display a complete frame, even if window extends beyond
edge of screen
D2h allow DV to change colors on video mode switch (default)
D3h application changes colors
D4h window is visible
D5h window is hidden
D6h window has frame
D7h window unframed
D8h read characters from window (default)
D9h read attributes from window
DAh use logical attributes, which may be remapped
attributes
1 normal text
2 highlighted normal text
3 help text
4 highlighted help text
5 error message
6 highlighted error message
7 emphasized text
8 marked text
9-16 are reverse video versions of 1-8
DBh use physical attributes for characters
DCh enable special actions for control characters (default)
DDh disable special control char handling, all chars displayable by
BIOS TTY call
DEh write both character and attribute (default)
DFh write character only, leave attribute untouched
E0h repeat following commands
BYTE number of times
E1h end of commands to repeat, start repeating them
E2h set color
BYTE color
E3h clear virtual screen
E4h redraw window
E5h select menu style
BYTE style
bits 5,4 = 01 use two-letter menu entries for remainder of
this stream
E5h (panel file only)
BYTE modifier
bits 7,6 = 11 panel goes in new window
= 01 panel uses existing window
bit 5 = 1 create new keyboard in field mode
bit 4 = 1 make newly-created keyboard active
bit 3 reserved
bit 2 = 1 stream defined exclusive input window (DV 2.2)
bit 1 reserved
bit 0 reserved
E6h create new window and perform rest of manipulations in new window
BYTE number of rows
BYTE number of columns
Return: DWORD object handle returned on stack at end
E7h unused
E8h scroll area up (top left corner defined by opcode C1h)
BYTE height
BYTE width
E9h scroll area down (top left corner defined by opcode C1h)
BYTE height
BYTE width
EAh scroll area left (top left corner defined by opcode C1h)
BYTE height
BYTE width
EBh scroll area right (top left corner defined by opcode C1h)
BYTE height
BYTE width
ECh set logical attributes for window contents
BYTE video modes command applies to
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attrs
bits 4-6 # of first attribute to change - 1
bits 0-3 # of consecutive attributes to change
N BYTEs new attributes
EDh set logical attributes for window frame
BYTE video modes command applies to (see opcode ECh)
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attrs
bits 4-6 # of first attribute to change - 1
bits 0-3 # of consecutive attributes to change
N BYTEs new attributes
attributes
1 = top left corner
2 = top right corner
3 = bottom left corner
4 = bottom right corner
5 = top edge
6 = bottom edge
7 = left edge
8 = right edge
EEh set characters for window frame
BYTE video modes command applies to (see opcode ECh)
BYTE which characters to set
bit 7 if set, copy single following byte to indicated chars
bits 4-6 # of first char to change - 1
bits 0-3 # of consecutive chars to change
N BYTEs new chars (same relative position as attributes above)
EFh set window name
BYTE length of name
N BYTEs name
F0h clear input field to blanks
BYTE field number
F1h fill input field with character
BYTE field number
BYTE char
F2h set color of input field
BYTE field number (1-N)
BYTE attribute
F3h set initial contents of input field
BYTE field number (1-N)
N BYTEs enough chars to exactly fill field as defined by op FFh
F4h position cursor to specific input field
BYTE field number (1-N)
F5h change field table entry
BYTE field number
7-8 BYTEs field table entry (see opcode FFh below)
F6h set field type
BYTE field number
BYTE type
F7h "broadcast write" write data to fields with broadcast bit set
in field table entry, in field number order
N BYTEs (total length of all program output fields)
F8h scroll field up a line
BYTE field number
F9h scroll field down a line
BYTE field number
FAh scroll field left
BYTE field number
FBh scroll field right
BYTE field number
FCh set field table header
BYTE number of fields
BYTE screen behavior bits
bit 7 reserved
bit 6 set if menu items may be selected via keyboard
bit 5 set if left mouse button may terminate entry
bit 4 set if right mouse button may terminate entry
bit 3 if set, select fields return contents or blanks rather
than 'Y' or 'N'
bit 2 if set, modified bits reset on return to application
bits 0,1 = 00 no data returned on read of keyboard
01 data returned as array of chars containing
all fields packed together, with no field
numbers
10 data returned as numbered variable-length
records for all fields
11 data returned as numbered variable-length
records for the fields which were modified
BYTE current input field (updated by DESQview)
BYTE current select field (updated by DESQview)
BYTE attribute for select fields when they are pointed at
BYTE attribute for select fields which have been selected
FDh reset modified bit for all fields
FEh reset selected and modified bits for all fields
FFh set up input fields
6 BYTEs table header (see opcode FCh above)
the field table entries, one for each field
BYTE start row \
BYTE start column \ if menu selection and start is to
BYTE end row / right or below end, select from kbd only
BYTE end column /
BYTE field type
bits 7,6 = 00 inactive (non-entry) field
01 echos keystrokes input to make menu selection
10 fill-in field
11 select field
bit 5 field can be filled by broadcast write (F7h opcode)
bit 4 reserved
bit 3 reserved
bit 2 reserved
bit 1 set if field selected
bit 0 set if field modified
BYTE modifier
if type is fill-in, then bit flags to determine behavior
bit 7 if set, automatically enter CR when field full
bit 6 move to next field when current field is full
bit 5 if set, enter text from right end (for numbers)
bit 4 if set, force input to uppercase
bit 3 if set, clear old contents on first keystroke
bit 2 if set, input returned when cursor moves out
of modified field (API level 2.02+)
bit 1 reserved
bit 0 reserved
if select field, first key to press to activate
00h if have to point-&-click or is an extended-ASCII
keystroke (only if two-key menus enabled)
BYTE (select field only) normal color of field
BYTE second key for select field. This byte is present iff
two-letter menu entries selected with opcode E5h, and
in that case is present regardless of field type
Note: DESQview uses and updates the actual copy of the information
which is contained in the stream. Thus this info must remain
intact until after the data entry is complete.
MODE 01h "QUERY STREAM" (valid only for those opcodes listed here)
A0h return logical cursor row in next byte
A1h return logical cursor column in next byte
A2h return top row of scrolling region in next byte
A3h return left column of scrolling region in next byte
A4h return row of physical window origin in next byte
A5h return column of physical window origin in next byte
A6h return height of physcial window in next byte
A7h return width of physical window in next byte
A8h return row of viewport origin in next byte
A9h return column of viewport origin in next byte
AAh return height of virtual screen in next byte
ABh return width of virtual screen in next byte
AFh return current video mode in next byte
C0h return current logical cursor position in next two bytes
C1h return top left corner of scrolling region in next two bytes
C2h return current window position in next two bytes
C3h return current window size in next two bytes
C4h return current viewport origin in next two bytes
C5h return current virtual screen size in next two bytes
D0h \ overwritten with D0h if frames may fall off screen edge
D1h / D1h if frames always displayed entirely
D2h \ overwritten with D2h if DESQview controls color palette
D3h / D3h if application changes color palette
D4h \ overwritten with D4h if window visible
D5h / D5h if window hidden
D6h \ overwritten with D6h if window has frame
D7h / D7h if window unframed
D8h \ overwritten with D8h if reading characters from window
D9h / D9h if reading attributes from window
DAh \ overwritten with DAh if using logical attributes
DBh / DBh if using physical attributes
DCh \ overwritten with DCh if TTY control char interpretation on
DDh / DDh if TTY control char interpretation off
DEh \ overwritten with DEh if writing both characters and attributes
DFh / DFh if leaving attributes untouched
E2h return current color in next byte
ECh get logical attributes for window contents
BYTE execute call if currently in specified video mode
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 # consecutive attributes
N BYTEs buffer to hold attributes
EDh get logical attributes for window frame
BYTE execute call if currently in video mode (see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 # consecutive attributes
N BYTEs buffer to hold attributes
EEh get characters for window frame
BYTE execute call if currently in video mode (see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first char to get - 1
bits 0-3 # consecutive chars
N BYTEs buffer to hold chars
EFh return current window name
BYTE max length of returned name
N BYTEs buffer to hold window name
F3h return contents of input field
BYTE field number
N BYTEs buffer to hold field contents (size exactly equal to field
size)
F5h get field table entry
BYTE field number
7-8 BYTEs buffer to hold field table entry
F6h get type of a field
BYTE field number
BYTE type
FCh get field table header
6 BYTEs buffer to store header
MODE 10h "MANAGER STREAM" (valid only for opcodes listed here)
00h allow window to be moved horizontally
01h allow window to be moved vertically
02h allow window to change width
03h allow window to change height
04h allow window to be scrolled horizontally
05h allow window to be scrolled vertically
06h allow "Close Window" menu selection
07h allow window to be hidden
08h allow "Mark" menu
0Eh allow "Scissors" menu
10h allow DESQview main menu to be popped up
11h allow "Switch Windows" menu
12h allow "Open Window" menu
13h allow "Quit" menu selection
20h-33h opposite of 00h-13h, disallow specified action
40h notify if horizontal position of window changes
41h notify if vertical position of window changes
42h notify if width of window changes
43h notify if height of window changes
44h notify if window scrolled horizontally
45h notify if window scrolled vertically
46h notify if window is closed--program has to clean up and exit itself
47h notify if window is hidden
48h notify if "?" on main menu selected
49h notify if pointer message sent to window
4Ah notify if window is made active
4Bh notify if window is switched away from
4Ch notify if video mode changes
4Dh notify if "Scissors" menu "Cut" option selected
4Eh notify if "Scissors" menu "Copy" option selected
4Fh notify if "Scissors" menu "Paste" option selected
50h notify if DESQview main menu popped up
51h notify if DESQview main menu popped down
60h-71h opposite of 40h-51h: don't notify on specified event
84h attach window to parent task's window (both move together)
85h detach window from parent task's window (may move independently)
86h disable background operation
87h enable running in background
88h set minimum size of physical window
BYTE rows
BYTE columns
89h set maximum size of physical window
BYTE rows
BYTE cols
8Ah set primary asynchronous notification routine
DWORD address of routine, 0000h:0000h means none
on entry ES:DI = handle of window, DS:SI is 32-bit value set
by 8Bh opcode
mailbox contains message indicating event
Opcode
40h horizontal movement
DWORD object handle of window
BYTE new row
BYTE new col
41h vertical movement
DWORD object handle of window
BYTE new row
BYTE new col
42h horizontal size change
DWORD object handle of window
BYTE new rows
BYTE new cols
43h vertical size change
DWORD object handle of window
BYTE new rows
BYTE new cols
44h scrolled horizontally
DWORD object handle of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 right, <0 left, 0 done
45h scrolled vertically
DWORD object hande of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 down, <0 up, 0 done
46h window closed
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
47h window hidden
48h Help for Program selected
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
49h pointer message sent to window
4Ah switched to window from another ("raise")
4Bh switched away from the window ("lower")
4Ch video mode changed
BYTE new video mode
4Dh Scissors/cUt selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created to
hold data
BYTE height of region
BYTE width of region
4Eh Scissors/Copy selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created to
hold data
BYTE height of region
BYTE width of region
4Fh Scissors/Paste selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window with data
BYTE height of region
BYTE width of region
50h main menu popped up
51h main menu popped down
routine should restore all registers before returning
8Bh set async notification parameter
DWORD 32-bit value passed to async routine in DS:SI
ACh (DV2.2) perform regular select field attribute processing
ADh (DV2.2) protect attributes in selected field from being lost
AEh make window default notify window for owning app (API level 2.00+)
AFh set selected field marker character
BYTE character to display at left edge of selected fields
BCh set standard field processing mode
BDh set alternate field processing mode (enables cursor pad for menus)
BEh enables changing reverse logical attributes with ECh opcode
BFh disables changing reverse logical attributes with ECh opcode
C0h make current window topmost in system
C1h force current process into foreground
C2h make current window topmost in process
C3h position mouse pointer relative to origin of current field
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C4h position mouse pointer relative to origin of given field
BYTE field number
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C5h hide current window
C6h show windows for this process
C7h hide all windows for this process
C8h suspend process and hide all its windows
C9h force current process into background
CAh make current window bottom-most in process
CBh cancel current window manager operation, remove DV menu, give
control to topmost application
CCh close window
CEh reorder windows
DWORD pointer to null-terminated list of words
each word is segment of object handle for a window
MODES 14h to 1Fh "USER STREAMS"
normally NOPs, but may be defined by SETESC message to invoke FAR
routines, one for each mode number
on entry to handler,
DS:SI = first byte of actual stream (not header)
CX = #bytes in stream
ES:DI = window's handle
---------------------------------------------
INT 15 - DESQview 2.2 - SEND MESSAGE - SET PRIORITY
AH = 12h
BH = 06h
BL = object
00h object handle in DWORD on top of stack
STACK: DWORD new priority of object in task's OBJECTQ
SeeAlso: AH=12h/BH=07h
---------------------------------------------
INT 15 - DESQview 2.2 - SEND MESSAGE - GET PRIORITY
AH = 12h
BH = 07h
BL = object
00h object handle in DWORD on top of stack
Return: STACK: DWORD object priority
Note: initially all objects have the same default value. Should make
relative adjustments to this default value.
SeeAlso: AH=12h/BH=06h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
AH = 12h
BH = 08h
BL = object
00h handle in DWORD on top of stack
timer: elapsed time since timer started
pointer: number of messages queued to pointer object
panel: number of panels in panel file
01h total chars in current task's default window
02h number of messages in task's mailbox (task's handle on stack)
03h number of messages in current task's mailbox
04h number of input buffers queued in task's kbd (handle on stack)
05h number of input buffers queued for current task's default kbd
06h number of objects queued in OBJECTQ (task's handle on stack)
07h number of objects queued in current task's OBJECTQ
Return: DWORD on stack is result
SeeAlso: AH=12h/BH=09h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
AH = 12h
BH = 09h
BL = object
00h handle in DWORD on top of stack
window: chars/line
timer: timer remaining before timer expires
01h number of chars/line in current task's default window
Return: DWORD on top of stack is length
SeeAlso: AH=12h/BH=08h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
AH = 12h
BH = 0Ah
BL = object
00h handle is DWORD on top of stack
window: write characters and attributes
timer: start timer for specified interval
pointer: set control flags
01h write characters and attributes to task's default window
02h send message/status by value to mailbox (task's handle on stack)
03h send message/status by value to current task's default mailbox
04h set control flags on KEYBOARD object (handle on top of stack)
05h set control flags on task's default KEYBOARD object
STACK: (if mailbox) DWORD status
DWORD length of message
DWORD address
(if timer) DWORD duration in 1/100 seconds
(if window) DWORD count of characters
DWORD address of characters
DWORD count of attributes
DWORD address of attributes
(otherwise) DWORD bits to set
For keyboard objects, the bits have the following significance:
bit 15 reserved, can't be set
bit 14 unused
bit 13 reserved, can't be set
bit 12-5 unused
bit 4 filter all keys (used with handler established by SETESC)
bit 3 program continues executing while input in progress
bit 2 insert mode active
bit 1 keyboard is active
bit 0 keyboard is in field mode
For pointer objects, the bits have the following significance:
bit 15 reserved, can't be set
bit 14-8 unused
bit 7 mouse pointer is hidden while in window
bit 6 get messages even if window not topmost
bit 5 get messages even if window not foreground
bit 4 mouse button must be held 1/2 second before it "clicks"
bit 3 pointer position is relative to screen origin, not window origin
bit 2 send message on button release as well as button press
bit 1 unused???
bit 0 send message only on button activity, not movement
DV-specific, and INT 15h/AX=DE0Fh must have been called first
SeeAlso: AH=12h/BH=0Bh
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
AH = 12h
BH = 0Bh
BL = object
00h handle is DWORD on top of stack
window: write attributes only
mailbox: send message by reference
pointer: reset control flags
01h write attributes only to task's default window
02h send msg/status by reference to mailbox (task's handle on stack)
03h send msg/status by reference to current task's mailbox
04h clear control flags on KEYBOARD object (handle on top of stack)
05h clear control flags on task's default KEYBOARD object
06h remove specific object from OBJECTQ (task's handle on stack)
07h remove specific object from task's default OBJECTQ
STACK: (if mailbox) DWORD status
DWORD length
DWORD address
(if window) DWORD number of attributes to write
DWORD address of attributes
(if objectq) DWORD handle of object to remove
(otherwise) DWORD indicates which bits to clear
SeeAlso: AH=12h/BH=0Ah
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
AH = 12h
BH = 0Ch
BL = object
00h handle is DWORD on top of stack
window: fill with given character
keyboard: attach to a window
timer: open
pointer: start taking input for window
panel: associate with a panel file
01h fill task's default window with given character
02h open given task's mailbox for input (task's handle on stack)
03h open current task's mailbox
04h attach a KEYBOARD to a window (handle on top of stack)
05h attach task's default KEYBOARD to a window
06h open a task's OBJECTQ (task's handle on top of stack)
07h open current task's OBJECTQ
STACK: (if window) DWORD character to fill with
(if keyboard) DWORD handle of window to attach to
(if pointer) DWORD handle of window to attach to
(if panel) DWORD length of filename
DWORD address of filename
(otherwise) nothing
Notes: special action taken if first byte of panel file name is 1Bh
if first two bytes of panel file "name" are C0hC3h, then the "name" IS
the panel file
result code of open may be retrieved with STATUS message
SeeAlso: AH=12h/BH=0Dh
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
AH = 12h
BH = 0Dh
BL = object
00h handle is DWORD on top of stack
timer: close
keyboard: detach from window
pointer: stop taking input
panel: close
02h close given task's mailbox (task's handle on top of stack)
03h close task's default mailbox
04h close KEYBOARD object (handle on top of stack)
05h close task's default KEYBOARD
06h close givent task's OBJECTQ (task's handle on top of stack)
07h close current task's OBJECTQ
SeeAlso: AH=12h/BH=0Ch
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
AH = 12h
BH = 0Eh
BL = object
00h handle is DWORD on top of stack
window: clear
keyboard: discard input
timer: cancel current interval
pointer: discard all pending messages
01h clear task's default window
02h discard all queued messages in mailbox (handle on top of stack)
03h discard all queued messages in current task's default mailbox
04h discard all input queued to KEYBOARD (handle on top of stack)
05h discard all input queued to task's default KEYBOARD
06h remove all objects from OBJECTQ (task's handle on top of stack)
07h remove all objects from current task's OBJECTQ
SeeAlso: AH=12h/BH=02h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
AH = 12h
BH = 0Fh
BL = object
00h handle is DWORD on top of stack
timer: is it running?
pointer: return status of last message
panel: verify success of last OPEN or APPLY
02h return status of last msg READ from mailbox (handle on stack)
03h return status of last msg READ from task's default mailbox
04h get status of last msg from task's KEYBOARD (task handle on stk)
05h get status of last msg from task's default KEYBOARD
06h return whether OBJECTQ is open or not (handle on top of stack)
07h return whether task's default OBJECTQ is open or not
Return: DWORD on top of stack is status
Note: if object is a panel object, the status indicates the error code:
14h panel name not in panel directory
15h not enough memory to apply panel
16h invalid panel format
17h panel file already open
81h-92h DOS error codes+80h
95h not enough memory to open panel file
98h null panel file name
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
AH = 12h
BH = 10h
BL = object
00h handle is DWORD on top of stack
01h returns TRUE if logical cursor past end of task's def window
02h return ??? for task's mailbox (task's handle on top of stack)
03h return ??? for current task's mailbox
Return: DWORD on top of stack is status
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
AH = 12h
BH = 11h
BL = object
00h window's handle is DWORD on top of stack
01h position logical cursor on task's default window
STACK: DWORD column
DWORD row
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
AH = 12h
BH = 11h
BL = mailbox to name
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD length of name
DWORD address of name
SeeAlso: AX=DE0Eh
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
AH = 12h
BX = 1100h
STACK: DWORD object handle for pointer object
DWORD number of colums to scale pointer position to
DWORD number of rows to scale pointer position to
SeeAlso: AH=12h/BX=1200h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
AH = 12h
BH = 12h
BL = object
00h handle is DWORD on top of stack
01h read next N chars/attributes on task's default window
STACK: DWORD count
Return: STACK: DWORD width of screen line
DWORD address
DWORD count actually read
SeeAlso: AH=12h/BH=04h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
AH = 12h
BX = 1200h
STACK: DWORD object handle for pointer
Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
DWORD pointer pos scaled as if window were this many rows high
SeeAlso: AH=12h/BX=1100h
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
AH = 12h
BH = 13h
BL = window object
00h DWORD on top of stack is handle for window to redraw
01h redraw task's default window
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
AH = 12h
BX = 1300h
STACK: DWORD object handle for pointer
DWORD character to use for pointer
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
AH = 12h
BH = 14h
BL = message modifier
00h handle is DWORD on top of stack
01h define user stream
04h intercept keystrokes from KEYBOARD to a window (handle on stack)
05h intercept keystrokes from task's default KEYBOARD to a window
STACK: (if window) DWORD user stream number (14h-1Fh)
DWORD address of FAR user stream handler
(if keyboard) DWORD address of FAR filter function
The keyboard filter function is called when the keyboard is in field mode. On
entry,
AL = character
AH = 00h or extended ASCII code if AL = 00h
BL = field number
CH = cursor column
CL = cursor row
DL = field type modifier (sixth item in field table entry)
DH = ??? (seventh item in field table entry)
ES:SI = window's handle
(also, in DV 2.00, DS:DI points to the field table entry. This may change in
other versions)
The filter function should return
AH = 00h use keystroke
01h ignore keystroke
>1 beep and ignore keystroke
---------------------------------------------
INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
AH = 12h
BH = 14h
BL = object
00h mailbox handle is DWORD on top of stack
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
Note: release exclusive access by sending CLOSE message to mailbox
access may be requested multiple times, and requires multiple CLOSEs
SeeAlso: AH=12h/BH=0Dh
---------------------------------------------
INT 15 - DESQview 2.2 - SEND MESSAGE - SET FLAGS
AH = 12h
BH = 15h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
STACK: DWORD flags
if mailbox:
bit 0: all mail messages in common memory
bit 1: allow write even if closed
bit 2: don't erase messages when mailbox closed
if keyboard:
bit 5: exclusive input when keyboard in use for input
Return: nothing
Note: this call is only available if the API level has been set to at least
2.2
SeeAlso: AH=12h/BH=16h
---------------------------------------------
INT 15 - DESQview 2.2 - SEND MESSAGE - GET FLAGS
AH = 12h
BH = 16h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
Return: STACK: DWORD current control flags
Note: this call is only available if the API level has been set to at least
2.2
SeeAlso: AH=12h/BH=15h
---------------------------------------------
INT 15 - VMiX - WAKE PROCESS
AH = 13h
STACK: WORD process ID
Return: AX = status
---------------------------------------------
INT 15 - VMiX - CLEAR WINDOW
AH = 14h
STACK: WORD top left corner of window
WORD bottom right corner of window
Return: AX = status
---------------------------------------------
INT 15 - VMiX - SET BANNER WINDOW MESSAGE
AH = 15h
STACK: DWORD pointer to ASCIZ banner message
Return: AX = status
---------------------------------------------
INT 15 - VMiX - SET ROOT WINDOW SIZE AND HOME CURSOR
AH = 16h
STACK: DWORD pointer to I/O Request Packet
WORD top left corner of window
WORD bottom right corner of window
Return: AX = status
---------------------------------------------
INT 15 - VMiX - GET CONSOLE WINDOW COLORS
AH = 17h
Return: AH = foreground color
AL = background color
SeeAlso: AH=18h
---------------------------------------------
INT 15 - VMiX - SET CONSOLE COLORS
AH = 18h
STACK: WORD new background/foreground colors
Return: AX = color
SeeAlso: AH=17h
---------------------------------------------
INT 15 - VMiX v2+ - ???
AH = 19h
STACK: WORD ???
Return: ???
---------------------------------------------
INT 15 - VMiX v2+ - ???
AH = 1Ah
STACK: 3 WORDs ???
Return: ???
---------------------------------------------
INT 15 - VMiX v2+ - ???
AH = 1Bh
STACK: 5 WORDs ???
Return: ???
---------------------------------------------
INT 15 - VMiX v2+ - ???
AH = 1Ch
STACK: 5 WORDs ???
Return: ???
---------------------------------------------
INT 15 - VMiX v2+ - ???
AH = 1Dh
???
Return: ???
---------------------------------------------
INT 15 - VMiX v2+ - ???
AH = 1Eh
STACK: WORD ???
Return: ???
---------------------------------------------
INT 15 - DOS 3.x PRINT.COM - DISABLE CRITICAL REGION FLAG (AT,XT286,PS50+)
AX = 2000h
SeeAlso: AX=2001h
---------------------------------------------
INT 15 - DOS 3.x PRINT.COM - SET CRITICAL REGION FLAG (AT,XT286,PS50+)
AX = 2001h
ES:BX -> byte which is to be incremented while in a DOS call
SeeAlso: AX=2000h
---------------------------------------------
INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
AX = 2010h
???
Return: ???
SeeAlso: AX=2011h
---------------------------------------------
INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
AX = 2011h
???
Return: ???
SeeAlso: AX=2010h
---------------------------------------------
INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
AH = 21h
AL = subfunction
00h read POST log
01h write POST log
BH = device ID
BL = error code
Return: CF set on error
AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
if function 00h:
BX = number of error codes stored
ES:DI -> error log
Note: the log is a series of words, the first byte of which identifies the
error code and the second the device.
---------------------------------------------
INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
AH = 40h
AL = subfunction
00h get system profile in CX and BX
01h set system profile from CX and BX
02h get internal modem profile in BX
03h set internal modem profile from BX
---------------------------------------------
INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE)
AH = 41h
AL = condition type
bits 0-2: condition to wait for
0 any external event
1 compare and return if equal
2 compare and return if not equal
3 test and return if not zero
4 test and return if zero
bit 3: reserved
bit 4: 1=port address, 0=user byte
bits 5-7: reserved
BH = condition compare or mask value
BL = timeout value times 55 milliseconds
00h means no timeout
DX = I/O port address if AL bit 4 set
ES:DI -> user byte if AL bit 4 clear
---------------------------------------------
INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE)
AH = 42h
AL = 00h to use system profile
01h to force suspend regardless of system profile
---------------------------------------------
INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
AH = 43h
Return: AL = status bits
bit 0: LCD detached
bit 1: reserved
bit 2: RS232/parallel adapter powered on
bit 3: internal modem powered on
bit 4: power activated by alarm
bit 5: standby power lost
bit 6: external power in use
bit 7: power low
---------------------------------------------
INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
AH = 44h
AL = 00h to power off
01h to power on
---------------------------------------------
INT 15 - OS HOOK - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
AH = 4Fh
AL = scan code
CF set
Return: CF set
AL = scan code
CF clear
scan code should be ignored
Note: called by INT 9 handler to translate scan codes
SeeAlso: INT 09
---------------------------------------------
INT 15 - OS HOOK - DEVICE OPEN (AT,XT2,XT286,PS)
AH = 80h
BX = device ID
CX = process type
Return: CF set on error
AH = status
CF clear if successful
AH = 00h
SeeAlso: AH=81h,82h
---------------------------------------------
INT 15 - OS HOOK - DEVICE CLOSE (AT,XT2,XT286,PS)
AH = 81h
BX = device ID
CX = process type
Return: CF set on error
AH = status
CF clear if successful
AH = 00h
SeeAlso: AH=80h,82h
---------------------------------------------
INT 15 - OS HOOK - DEVICE PROGRAM TERMINATE (AT,XT2,XT286,PS)
AH = 82h
BX = device ID
Return: CF set on error
AH = status
CF clear if successful
AH = 00h
Note: closes all devices opened with function 80h
SeeAlso: AH=80h,81h
---------------------------------------------
INT 15 - SYSTEM - EVENT WAIT (AT,XT286,CONV,PS)
AH = 83h
AL = subservice
00h = set interval
01h = cancel
ES:BX -> event flag (bit 7 set when interval expires)
CX:DX = number of microseconds to wait (only accurate to 977 us)
Return: CF set if function already busy
Note: the resolution of the wait period is 977 microseconds on most systems
because most BIOSes use the 1/1024 second fast interrupt from the AT
real-time clock chip which is available on INT 70
SeeAlso: AH=86h, INT 70
---------------------------------------------
INT 15 - SYSTEM - READ JOYSTICK (AT,XT2,XT286,PS)
AH = 84h
DX = subservice
0000h get switch settings
Return: AL = switch settings (bits 7-4)
0001h read joystick inputs
Return: AX = A(x) value
BX = A(y) value
CX = B(x) value
DX = B(y) value
---------------------------------------------
INT 15 - OS HOOK - SYSTEM REQUEST KEY PRESSED (AT,XT2,XT286,CONV,PS)
AH = 85h
AL = 00h press
= 01h release
Return: CF set on error
AH = status
Note: called by keyboard decode routine
SeeAlso: INT 09
---------------------------------------------
INT 15 - SYSTEM - WAIT (AT,XT2,XT286,CONV,PS)
AH = 86h
CX,DX = number of microseconds to wait (only accurate to 977 us)
Return: CF clear: after wait elapses
CF set: immediately due to error
Note: the resolution of the wait period is 977 microseconds on most systems
because most BIOSes use the 1/1024 second fast interrupt from the AT
real-time clock chip which is available on INT 70
SeeAlso: AH=83h, INT 70
---------------------------------------------
INT 15 - EXTENDED MEMORY - BLOCK MOVE (AT,XT286,PS)
AH = 87h
CX = number of words to move
ES:SI -> global descriptor table (see below)
Return: CF set on error
AH = status
00h source copied into destination
01h parity error
02h interrupt error
03h address line 20 gating failed
SeeAlso: AH=88h
Format of global descriptor table:
Offset Size Description
00h 16 BYTEs zeros
10h WORD source segment length in bytes (2*CX-1 or greater)
12h 3 BYTEs 24-bit linear source address, low byte first
15h BYTE source segment access rights (93h)
16h WORD zero
18h WORD destination segment length in bytes (2*CX-1 or greater)
1Ah 3 BYTEs 24-bit linear destination address, low byte first
1Dh BYTE destination segment access rights (93h)
1Eh 18 BYTEs zeros
---------------------------------------------
INT 15 - EXTENDED MEMORY - GET MEMORY SIZE (AT,XT286,PS)
AH = 88h
Return: AX = memory size in K
SeeAlso: AH=87h
Note: TSRs which wish to allocate extended memory to themselves often hook
this call, and return a reduced memory size. They are then free to
use the memory between the new and old sizes at will.
---------------------------------------------
INT 15 - SYSTEM - SWITCH TO VIRTUAL MODE (AT,XT286,PS50+)
AH = 89h
BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
DS:SI -> GDT for protected mode
offset 0h null descriptor
8h GDT descriptor
10h IDT descriptor
18h DS
20h ES
28h SS
30h CS
38h uninitialized, used to build descriptor for BIOS CS
CX = offset into protected-mode CS to jump to
Return: CF set on error
AH = 0FFh error enabling address line 20
in protected mode at specified address if successful
SeeAlso: INT 67/AX=DE0Ch
---------------------------------------------
INT 15 - OS HOOK - DEVICE BUSY LOOP (AT,XT2,XT286,CONV,PS)
AH = 90h
AL = type code
00h disk
01h diskette
02h keyboard
03h PS/2 pointing device
80h network
FCh disk reset
FDh diskette motor start
FEh printer
ES:BX -> request block for type codes 80h through BFh
Return: CF set if wait time satisfied
CF clear if driver must perform wait
Note: type codes are allocated as follows:
00-7F non-reentrant devices; OS must arbitrate access
80-BF reentrant devices; ES:BX points to a unique control block
C0-FF wait-only calls, no complementary INT 15/AH=91h call
SeeAlso: AH=91h
---------------------------------------------
INT 15 - OS HOOK - SET FLAG AND COMPLETE INTERRUPT (AT,XT2,XT286,CONV,PS)
AH = 91h
AL = type code (see AH=90h)
ES:BX -> request block for type codes 80h through BFh
Return: AH = 00h
SeeAlso: AH=90h
---------------------------------------------
INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
AH = C0h
Return: CF set if BIOS doesn't support call
CF clear on success
ES:BX -> ROM table (see below)
Note: the 1/10/86 XT BIOS returns an incorrect value for the feature byte
Format of ROM configuration table:
Offset Size Description
00h WORD number of bytes following
02h BYTE model (see below)
03h BYTE submodel (see below)
04h BYTE BIOS revision: 0 for first release, 1 for 2nd, etc.
05h BYTE features:
bit 7 = DMA channel 3 used by hard disk BIOS
bit 6 = 2nd 8259 installed
bit 5 = Real-Time Clock installed
bit 4 = INT 15h/AH=4Fh called upon INT 9h
bit 3 = wait for external event supported
bit 2 = extended BIOS area allocated at 640K
bit 1 = bus is Micro Channel instead of ISA
bit 0 reserved
06h WORD reserved (0)
08h WORD reserved (0)
0Ah AWARD copyright notice here
Values for model/submodel/revision:
Model Submdl Rev BIOS date System
FFh * * 04/24/81 PC (original)
FFh * * 10/19/81 PC (some bugfixes)
FFh * * 10/27/82 PC (HD, 640K, EGA support)
FEh * * 08/16/82 PC XT
FEh * * 11/08/82 PC XT and Portable
FDh * * 06/01/83 PCjr
FCh * * 01/10/84 AT models 068,099 6 MHz 20MB
FCh 00h 01h 06/10/85 AT model 239 6 MHz 30MB
FCh 00h <> 01h ??? 7531/2 Industrial AT
FCh 01h 00h 11/15/85 AT models 319,339 8 MHz, Enh Keyb, 3.5"
FCh 01h ??? ??? Compaq 286/386
FCh 02h 00h 04/21/86 PC XT-286
FCh 04h 00h 02/13/87 ** PS/2 Model 50
FCh 04h 03h 04/18/88 PS/2 Model 50Z
FCh 05h 00h 02/13/87 ** PS/2 Model 60
FCh 06h ??? ??? 7552 "Gearbox"
FCh 09h 02h 06/28/89 PS/2 Model 30-286
FCh 81h 00h 01/15/88 Phoenix 386 BIOS v1.10 10a
FBh 00h 01h 01/10/86 PC XT, Enh Keyb, 3.5" support
FBh 00h 02h 05/09/86 PC XT
FAh 00h 00h 09/02/86 PS/2 Model 30
FAh 00h 01h 12/12/86 PS/2 Model 30
FAh 01h 00h ??? PS/2 Model 25
F9h 00h 00h 09/13/85 PC Convertible
F8h 00h 00h 03/30/87 ** PS/2 Model 80 16MHz
F8h 01h 00h 10/07/87 PS/2 Model 80 20MHz
F8h 04h 02h 04/11/88 PS/2 Model 70, at least model -121
F8h 04h 03h 03/17/89 PS/2 Model 70, at least model -M61
F8h 09h ??? ??? PS/2 Model 70 some models
F8h 09h 02h 04/11/88 PS/2 Model 70 some models
F8h 09h 03h 03/17/89 PS/2 Model 70 some models
F8h 0Ch 00h 11/02/88 PS/2 Model 55SX
F8h 1Bh 00h 10/02/89 PS/2 Model 70-486
9Ah * * ??? Compaq XT/Compaq Plus
30h ??? ??? ??? Sperry PC
2Dh * * ??? Compaq PC/Compaq Deskpro
* This BIOS call is not implemented in these early versions.
Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
** These BIOS versions require the DASDDRVR.SYS patches.
---------------------------------------------
INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
AH = C1h
Return: CF set on error
CF clear if successful
ES = segment of data area
SeeAlso: AH=04h"ABIOS"
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
AX = C200h
BH = 00h disable
01h enable
Return: CF set on error
AH = status
00h successful
01h invalid function
02h invalid input
03h interface error
04h need to resend
05h no device handler installed
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
AX = C201h
Return: CF set on error
AH = status (see AX=C200h)
CF clear if successful
BH = device ID
SeeAlso: INT 33/AX=0000h
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
AX = C202h
BH = sampling rate
00h 10/second
01h 20/second
02h 40/second
03h 60/second
04h 80/second
05h 100/second
06h 200/second
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: INT 33/AX=001Ch
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
AX = C203h
BH = resolution
00h one count per mm
01h two counts per mm
02h four counts per mm
03h eight counts per mm
Return: CF set on error
AH = status (see AX=C200h)
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
AX = C204h
Return: CF set on error
AH = status (see AX=C200h)
CF clear if successful
BH = device ID
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
AX = C205h
BH = data package size (1 - 8 bytes)
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: AX=C201h
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET/SET SCALING FACTOR
AX = C206h
BH = subfunction
00h return device status
Return: BL = status
bit 0: right button pressed
bit 1: reserved
bit 2: left button pressed
bit 3: reserved
bit 4: 0 if 1:1 scaling, 1 if 2:1 scaling
bit 5: device enabled
bit 6: 0 if stream mode, 1 if remote mode
bit 7: reserved
CL = resolution (see AX=C203h)
DL = sample rate, reports per second
01h set scaling at 1:1
02h set scaling at 2:1
Return: CF set on error
AH = status (see AX=C200h)
---------------------------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
AX = C207h
ES:BX = user device handler
Return: CF set on error
AH = status (see AX=C200h)
SeeAlso: INT 33/AX=000Ch
--------------------------------------------
INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
AH = C3h
AL = 00h disable
01h enable
BX = timer counter
Return: CF set on error
CF clear if successful
Note: the watchdog timer generates an NMI
---------------------------------------------
INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
AH = C4h
AL = 00h return base POS register address
01h enable slot
BL = slot number
02h enable adapter
Return: CF set on error
DX = base POS register address (if function 00h)
---------------------------------------------
INT 15 - DESQview - GET PROGRAM NAME
AX = DE00h
Return: AX = offset into DESQVIEW.DVO of current program's record (see below)
SeeAlso: AX=DE07h
Format of program entry in DESQVIEW.DVO:
Offset Size Description
00h BYTE length of name
01h N BYTEs name
2 BYTEs keys to invoke program (second = 00h if only one key used)
WORD ??? seems always to be 0000h
BYTE end flag: 00h for all but last entry, which is FFh
---------------------------------------------
INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
AX = DE01h
Return: nothing
Note: reads DESQVIEW.DVO, disables Open menu if file not in current directory
---------------------------------------------
INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
AX = DE02h
Return: nothing
Note: this call is a NOP in DV 2.x
SeeAlso: AX=DE03h
---------------------------------------------
INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
AX = DE03h
Return: AX = ??? for current window
BX = ??? for current window
Note: this call is a NOP in DV 2.x
SeeAlso: AX=DE02h
---------------------------------------------
INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
AX = DE04h
Return: BX = bytes of common memory available
CX = largest block available
DX = total common memory in bytes
SeeAlso: AX=DE05h,DE06h
---------------------------------------------
INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
AX = DE05h
Return: BX = K of memory available
CX = largest block available
DX = total conventional memory in K
SeeAlso: AX=DE04h,DE06h
---------------------------------------------
INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
AX = DE06h
Return: BX = K of expanded memory available
CX = largest block available
DX = total expanded memory in K
SeeAlso: AX=DE04h,DE05h
---------------------------------------------
INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
AX = DE07h
Return: AX = number of program as it appears on the "Switch Windows" menu
SeeAlso: AX=DE00h
---------------------------------------------
INT 15 - DESQview - GET ???
AX = DE08h
Return: AX = 0000h if ??? is not set to the current task
0001h if ??? is set to the current task
---------------------------------------------
INT 15 - DESQview - UNIMPLEMENTED
AX = DE09h
Return: nothing (NOP in DV 1.x and 2.x)
---------------------------------------------
INT 15 - DESQview 2.x - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
AX = DE0Ah
BL = character
Return: character displayed, next call will display in next position (which
wraps back to the start of the line if off the right edge of screen)
Notes: displays character on bottom line of *physical* screen, regardless
of current size of window (even entirely hidden)
does not know about graphics display modes, just pokes the characters
into display memory
SeeAlso: AX=1003h
---------------------------------------------
INT 15 - DESQview 2.x - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
AX = DE0Bh
BL = API level major version number
BH = API level minor version number
Return: AX = maximum API level (AL = major, AH = minor)
Notes: if the requested API level is greater than the version of DESQview, a
"You need a newer version" error window is popped up
some early copies of DV 2.00 return AX=0200h instead of 0002h
---------------------------------------------
INT 15 - DESQview 2.x - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
AX = DE0Ch
BX = number of bytes
Return: ES:DI -> allocated block
SeeAlso: AX=1001h,DE0Dh
---------------------------------------------
INT 15 - DESQview 2.x - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
AX = DE0Dh
ES:DI -> previously allocated block
Return: nothing
SeeAlso: AX=1002h,DE0Ch
---------------------------------------------
INT 15 - DESQview 2.x - FIND MAILBOX BY NAME
AX = DE0Eh
ES:DI -> name to find
CX = length of name
Return: BX = 0000h not found
0001h found
DS:SI = object handle
SeeAlso: AH=12h/BH=11h
---------------------------------------------
INT 15 - DESQview 2.x - ENABLE DESQview EXTENSIONS
AX = DE0Fh
Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
Notes: sends a manager stream with opcodes AEh, BDh, and BFh to task's window
enables an additional mouse mode
---------------------------------------------
INT 15 - DESQview 2.x - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
AX = DE10h
BH = scan code
BL = character
Return: nothing
Note: a later read will get the keystroke as if it had been typed by the user
early copies of DV 2.00 destroy AX, BX, ES, and DI
SeeAlso: INT 16/AH=05h
---------------------------------------------
INT 15 - DESQview 2.x - ENABLE/DISABLE AUTOMATIC JUSTIFICATION OF WINDOW
AX = DE11h
BL = 00h viewport will not move automatically
nonzero viewport will move to keep cursor visible
Return: nothing
---------------------------------------------
INT 15 - DESQview 2.01+ - SET ???
AX = DE12h
BX = 0000h clear ??? flag
nonzero set ??? flag
Return: nothing
---------------------------------------------
INT 15 - DESQview 2.2 - GET CRITICAL NESTING COUNT
AX = DE13h
Return: BX = number of calls to BEGINC (see INT 15/AX=101Bh) without matching
ENDC (see INT 15/AX=101Ch)
SeeAlso: AX=101Bh,101Ch,DE1Bh,DE1Ch
---------------------------------------------
INT 15 - DESQview 2.2 - GET OBJECT TYPE
AX = DE14h
ES:DI -> object
Return: BL = 00h not an object
08h window or task
09h mailbox
0Ah keyboard
0Bh timer
0Ch objectq
0Fh pointer
10h panel
SeeAlso: AX=1016h
---------------------------------------------
INT 15 - DESQview 2.2 - SET MAILBOX ERROR HANDLING
AX = DE15h
BL = 00h post system error on conditions listed below
01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
messages sent to mailboxes which fail due to lack of system
or common memory
Return: nothing
SeeAlso: AX=DE16h
---------------------------------------------
INT 15 - DESQview 2.2 - GET MAILBOX ERROR HANDLING
AX = DE16h
Return: BL = 00h post system error
01h return carry flag set
SeeAlso: AX=DE15h
---------------------------------------------
INT 15 - DESQview 2.20-2.25 - reserved
AX = DE17h
Return: pops up "Programming error" window
Note: AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
---------------------------------------------
INT 15 - DESQview 2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
AX = 1117h
BX = 0000h get current mapping context without setting
nonzero set new mapping context
Return: BX = mapping context in effect before call
Notes: mapping contexts determine conventional-memory addressability; setting
a mapping context ensures that the associated program and data areas
are in memory for access. Usable by drivers, TSRs and shared
programs.
Caller need not be running under DESQview
---------------------------------------------
INT 15 - DESQview 2.2 - ???
AX = DE18h
BP = function number
high byte must be 10h
low byte is function
00h set ???
BL = ??? (00h-10h, video mode???)
BH = value to store
03h set ???
BL = ??? (stored in driver)
0Ah get ???
ES:DI -> 18-byte buffer to hold ???
Note: calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
---------------------------------------------
INT 15 - DESQview 2.26 - ALLOCATE "COMMON" MEMORY
AX = DE19h
BX = number of bytes to allocate
Return: AX = 0000h successful
ES:DI -> allocated block
0001h insufficient memory
SeeAlso: AX=DE0Ch,DE1Ah
---------------------------------------------
INT 15 - DESQview 2.26 - DEALLOCATE "COMMON" MEMORY
AX = DE1Ah
DS:SI -> previously allocated block
Return: ???
SeeAlso: AX=DE0Dh,DE19h
---------------------------------------------
INT 15 - DESQview 2.26 - DECREMENT CRITICAL NESTING COUNT
AX = DE1Bh
Return: nothing
SeeAlso: AX=DE13h,DE1Ch
---------------------------------------------
INT 15 - DESQview 2.26 - INCREMENT CRITICAL NESTING COUNT
AX = DE1Ch
Return: nothing
SeeAlso: AX=DE13h,DE1Bh
---------------------------------------------
INT 15 - DESQview 2.26 - ???
AX = DE1Dh
DX = segment of ??? object
???
Return: AX = ???
---------------------------------------------
INT 15 - DESQview 2.26 - GET TRUE VIDEO PARAMETERS
AX = DE1Eh
Return: BL = actual video mode (may differ from INT 10/AH=0Fh return)
CL = actual number of rows on screen
CH = actual number of columns on screen
SeeAlso: INT 10/AH=0Fh
---------------------------------------------
INT 15 - DESQview 2.26 - GET ???
AX = DE1Fh
Return: BX = segment of ??? object or 0000h if none
---------------------------------------------
INT 15 - DESQview 2.26 - INTERRUPT ANOTHER TASK
AX = DE20h
BX = segment of handle of task to interupt
DX:CX -> interrupt routine
Return: ???
---------------------------------------------
INT 15 - DESQview 2.26 - CONTROL 386 SCREEN VIRTUALIZATION
AX = DE21h
BX = 0000h turn off
nonzero turn on
Return: BX = old state of virtualization
---------------------------------------------
INT 15 - DESQview 2.26 - GET TASK MEMORY STATUS
AX = DE22h
DX = segment of task handle
Return: DX = total amount of memory in paragraphs
BX = amount of system memory in paragraphs
CX = largest block of system memory available in paragraphs
AX = flags
bit 0: system memory resides in shared memory
1: process's memory is swapped out
2: system memory is swapped out
---------------------------------------------
INT 16 - KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY
AH = 00h
Return: AH = scan code
AL = character
Note: on extended keyboards, this function discards any extended keystrokes,
returning only when a non-extended keystroke is available
SeeAlso: AH=01h,10h
---------------------------------------------
INT 16 - KEYBOARD - CHECK BUFFER, DO NOT CLEAR
AH = 01h
Return: ZF clear if character in buffer
AH = scan code
AL = character
ZF set if no character in buffer
SeeAlso: AH=00h,11h
---------------------------------------------
INT 16 - KEYBOARD - GET SHIFT STATUS
AH = 02h
AL = shift status bits
0 = right shift key depressed
1 = left shift key depressed
2 = CTRL depressed
3 = ALT depressed
4 = SCROLL LOCK active
5 = NUM LOCK active
6 = CAPS LOCK active
7 = INSERT state active
SeeAlso: AH=12h
---------------------------------------------
INT 16 - KEYBOARD - SET DELAYS (Jr,AT model 339,XT286,PS)
AH = 03h
AL = subfunction
00h reset typematic (PCjr)
01h increase initial delay (PCjr)
02h increase continuing delay (PCjr)
03h increase both delays (PCjr)
04h turn off typematic (PCjr)
05h Set typematic rate (AT or PS/2)
BH = 00h - 03h for delays of 250ms, 500ms, 750ms, or 1s
BL = 00h - 1Fh for typematic rates of 30cps down to 2cps
---------------------------------------------
INT 16 - KEYBOARD - KEYCLICK (Jr,CONV)
AH = 04h
AL = 00h click off
01h click on
---------------------------------------------
INT 16 - KEYBOARD - WRITE TO KEYBOARD BUFFER (AT model 339,XT2,XT286,PS)
AH = 05h
CH = scan code
CL = character
Return: AL = 01h if buffer full
SeeAlso: AH=71h, INT 15/AX=DE10h
---------------------------------------------
INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (AT model 339,XT2,XT286,PS)
AH = 10h
Return: AH = scan code
AL = character
Note: unlike AH=00h, this function does not discard extended keystrokes
SeeAlso: AH=00h,11h
---------------------------------------------
INT 16 - KEYBOARD - CHECK ENHANCED KEYSTROKE (AT model 339,XT2,XT286,PS)
AH = 11h
Return: ZF clear if keystroke available
AH = scan code \ meaningless if ZF = 1
AL = character /
ZF set if kbd buffer empty
SeeAlso: AH=01h,10h
---------------------------------------------
INT 16 - KEYBOARD - GET ENHANCED SHIFT FLAGS (AT model 339,XT2,XT286,PS)
AH = 12h
Return: AL = shift flags (same as for AH=02h)
bit 7: Ins ON
bit 6: CapsLock ON
bit 5: NumLock ON
bit 4: ScrollLock ON
bit 3: Either ALT key down
bit 2: Either CTRL key down
bit 1: Left shift key down
bit 0: Right shift key down
AH
bit 7: SysReq key down
bit 6: CapsLock key down
bit 5: NumLock key down
bit 4: ScrollLock key down
bit 3: Right Alt key down
bit 2: Right Ctrl key down
bit 1: Left Alt key down
bit 0: Left Ctrl key down
Notes: AL bit 3 set only for left Alt key on many machines
AH bits 7 through 4 always clear on a Compaq SLT/286
SeeAlso: AH=02h
---------------------------------------------
INT 16 - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
AX = 5500h
Return: AX = 4D53h if keyboard TSR present
Notes: during startup, Microsoft Word tries to communicate with any TSRs
that are present through this call.
If the return is not 4D53h, Word installs its own INT 9h and INT 16h
handlers, otherwise it assumes that the TSR will handle the keyboard.
---------------------------------------------
INT 16 - PC Tools v5.1 BACKTALK - UNHOOK
AX = 6969h
BX = 6968h
Return: resident code unhooked, but not removed from memory
---------------------------------------------
INT 16 - PC Tools v5.1 BACKTALK - INSTALLATION CHECK
AX = 6969h
BX = 6969h
DX = 0000h
Return: DX nonzero if installed
BX = CS of resident code
DX = PSP segment of resident code
DS:SI -> ASCIZ identification string "CPoint Talk"
---------------------------------------------
INT 16 - MS Windows - ???
AH = 6Fh
???
Return: ???
---------------------------------------------
INT 16 - FAKEY.COM - INSTALLATION CHECK
AH = 70h
Return: AX = 1954h if installed
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
---------------------------------------------
INT 16 - FAKEY.COM - PUSH KEYSTROKES
AH = 71h
CX = number of keystrokes
DS:SI -> array of words containing keystrokes to be returned by AH=00h
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: AH=05h,72h
---------------------------------------------
INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
AH = 72h
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: AH=71h
---------------------------------------------
INT 16 - FAKEY.COM - PLAY TONES
AH = 73h
CX = number of tones to play
DS:SI -> array of tones (see below)
Note: FAKEY is a keystroke faking utility by System Enhancement Associates
Format of tone array entries:
Offset Size Description
00h WORD divisor for timer channel 2
02h WORD duration in clock ticks
---------------------------------------------
INT 16 - pcANYWHERE - SET TICK COUNT FOR SCANNING
AH = 75h
AL = number of ticks between checks for new screen changes
---------------------------------------------
INT 16 - pcANYWHERE - SET ERROR CHECKING TYPE
AH = 76h
AL = error checking type
00h none
01h fast
02h slow
---------------------------------------------
INT 16 - pcANYWHERE - LOG OFF
AH = 77h
AL = mode
00h wait for another call
01h leave in Memory Resident Mode
02h leave in Automatic Mode
FFh leave in current operating mode
---------------------------------------------
INT 16 - WATCH.COM - INSTALLATION CHECK
AX = 7761h ('wa')
Return: AX = 5741h ('WA') if installed
Note: WATCH.COM is part of the "TSR" package by Kim Kokkonen
---------------------------------------------
INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
AX = 7788h
BX = 7789h
Return: AX = 7789h
BX = 7788h
DS:SI -> signature string
---------------------------------------------
INT 16 - pcANYWHERE - CHECK STATUS
AH = 79h
Return: AX = status
FFFFh if resident and active
FFFEh if resident but not active
FFFDh if in Memory Resident mode
FFFCh if in Automatic mode
other value if not resident
---------------------------------------------
INT 16 - pcANYWHERE - CANCEL SESSION
AH = 7Ah
---------------------------------------------
INT 16 - pcANYWHERE - SUSPEND
AX = 7B00h
SeeAlso: AX=7B01h
---------------------------------------------
INT 16 - pcANYWHERE - RESUME
AX = 7B01h
SeeAlso: AX=7B00h
---------------------------------------------
INT 16 - pcANYWHERE - GET PORT CONFIGURATION
AH = 7Ch
Return: AH = port number
AL = baud rate
00h = 50 baud
01h = 75 baud
02h = 110 baud
03h = 134.5 baud
04h = 150 baud
05h = 300 baud
06h = 600 baud
07h = 1200 baud
08h = 1800 baud
09h = 2000 baud
0Ah = 2400 baud
0Bh = 4800 baud
0Ch = 7200 baud
0Dh = 9600 baud
0Eh = 19200 baud
---------------------------------------------
INT 16 - pcANYWHERE - GET/SET TERMINAL PARAMETERS
AH = 7Dh
AL = subfunction
00h set terminal parameters
01h get terminal parameters
02h get configuration header and terminal parameters
DS:CX -> terminal parameter block
---------------------------------------------
INT 16 - pcANYWHERE - COMMUNICATIONS I/O THROUGH PORT
AH = 7Eh
AL = subfunction
01h port input status
Return AX = 0 if no characer ready,
AX = 1 if character ready
02h port input character
Return AL = received character
03h port output character in CX
11h hang up phone
---------------------------------------------
INT 16 - pcANYWHERE - SET KEYBOARD/SCREEN MODE
AH = 7Fh
AL = subfunction
00h enable remote keyboard only
01h enable host keyboard only
02h enable both keyboards
08h display top 24 lines
09h display bottom 24 lines
10h Hayes modem
11h other modem
12h direct connect
---------------------------------------------
INT 16 - MAKEY.COM - INSTALLATION CHECK
AH = 80h
Return: AX = 1954h if installed
Note: MAKEY is a utility by System Enhancement Associates
---------------------------------------------
INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
AH = AAh
Various registers set up by high level language.
Return: Graphics performed
Note: PT stands for Paint Tools which is a graphics library for Turbo Pascal,
Modula 2 and others from DataBiten in Sweden. The library is
installed as a memory resident driver.
---------------------------------------------
INT 16 - Compaq 386 - SET CPU SPEED
AH = F0h
AL = speed
00h equivalent to 6 MHz 80286 (COMMON)
01h equivalent to 8 MHz 80286 (FAST)
02h full 16 MHz (HIGH)
03h toggles between 8 MHz-equivalent and speed set by system board
switch (AUTO or HIGH)
08h full 16 MHz except 8 MHz-equivalent during floppy disk access
09h specify speed directly
CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
SeeAlso: AH=F1h
---------------------------------------------
INT 16 - PE.EXE - INSTALLATION CHECK
AX = F0F0h
Return: AX = 0F0Fh if installed
ES:DI -> data block
Note: PE is a TSR screen grabber included with ASMED, an integrated
environment for TASM and MASM
Format of data block:
Offset Size Description
00h DWORD pointer to program tag (counted ASCII string)
04h WORD ???
06h DWORD pointer to ???
0Ah 4 BYTEs ???
0Eh DWORD ???
more???
---------------------------------------------
INT 16 - Compaq 386 - READ CURRENT CPU SPEED
AH = F1h
Return: AL = speed code (see AH=F0h)
if AL = 09h, CX = speed code
SeeAlso: AH=F0h
---------------------------------------------
INT 16 - Compaq 386 - DETERMINE ATTACHED KEYBOARD TYPE
AH = F2h
Return: AL = type
00h if 11-bit AT keyboard is in use
01h if 9-bit PC keyboard is in use
---------------------------------------------
INT 16 - PC Tools v6.0 DESKTOP API - ???
AX = FFADh
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v6.0 DESKTOP API - ???
AX = FFAEh
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v6.0 DESKTOP API - ???
AX = FFAFh
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v6.0 DESKTOP API - ???
AX = FFB0h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v6.0 DESKTOP API - ???
AX = FFB1h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.5 DESKTOP API - ???
AX = FFB2h
Return: DS:SI -> ???
---------------------------------------------
INT 16 - PC Tools v5.5 DESKTOP API - ???
AX = FFB3h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.5 DESKTOP API - ???
AX = FFB4h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.5 DESKTOP API - GET/SET ???
AX = FFB5h
BX = ??? (000Fh to 0019h)
DX = 0000h get, nonzero = set
ES:DI -> 16-byte buffer with new values or to receive old values
---------------------------------------------
INT 16 - PC Tools v5.5 DESKTOP API - ???
AX = FFB6h
???
Return: AH = ???
AL = ???
---------------------------------------------
INT 16 - PC Tools v5.5 DESKTOP API - SET ???
AX = FFB7h
DS:SI -> 10-byte buffer with ???
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFB8h
BH = subfunction
00h get
Return: BL = old value of ???
nonzero set
BL = new value for ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFB9h
???
Return: AX = ???
CX = ???
DS:SI -> ???
ES:DI -> ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFBAh
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFBBh
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - RESTORE ORIGINAL SCREEN???
AX = FFBCh
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - POP DOWN???
AX = FFBDh
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFBEh
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFBFh
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFC0h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFC1h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFC2h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFC3h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFC4h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - CHECK WHETHER DESKTOP LOADED RESIDENT
AX = FFC5h
Return: BL = nonzero if loaded resident
= 00h if nonresident
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - SET ???
AX = FFC6h
BL = new value for ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFC7h
???
Return: ???
Note: screen swapping???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - GET ???
AX = FFC8h
Return: DS:SI -> ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFC9h
SI = ???
CX = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFCAh
DX = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFCBh
DX = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - DISPLAY ASCIZ STRING
AX = FFCCh
DS:SI -> ASCIZ string
Return: AX = ???
CX = ???
ES:DI -> address past last character displayed
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFCDh
DS:DX -> ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - SET ??? DELAYS
AX = FFCEh
CX = ???
Return: nothing???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFCFh
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD0h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD1h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD2h
BX = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD3h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - CREATE/OPEN/DELETE FILE
AX = FFD4h
BH = 3Ch create file
CX = file attributes
3Dh open file
41h delete file
BL = access mode
00h read only
01h write only
02h read/write
DS:SI -> ASCIZ filename
Return: BX = file handle
0000h on error
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD5h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD6h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD7h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - SAFE CREATE FILE
AX = FFD8h
DS:BX -> ASCIZ filename
Return: BX = file handle
0000h on error
Note: pops up confirmation menu if file already exists
only available when popped up???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFD9h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFDAh
DS:SI -> ???
Return: DS:SI -> ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFDBh
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - UNHOOK
AX = FFDCh
Return: interrupt vectors 09h, 16h, 1Ch, and 21h restored to original values
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - INSTALLATION CHECK
AX = FFDDh
BX = 0000h
Return: CX = 5555h
DX = 5555h if PCShell installed in resident mode
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - REQUEST POP-UP
AX = FFDDh
BX = 0001h
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - GET ???
AX = FFDDh
BX = 0002h
Return: AL =
00h ???
01h ???
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - REQUEST POP-UP
AX = FFDDh
BX = 0003h
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - ???
AX = FFDDh
BX = 0004h
???
Return: DS:SI -> ???
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - ???
AX = FFDDh
BX = 0005h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - ???
AX = FFDDh
BX = 0006h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - ???
AX = FFDDh
BX = 0007h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 PCShell API - ???
AX = FFDDh
BX = 0008h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v6.0 PCShell API - GET ???
AX = FFDDh
BX = 0009h
Return: DS:SI -> ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFDEh
DS:DX -> ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFDFh
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE0h
CX = ???
DX = ???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - BEEP
AX = FFE1h
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE2h
DX = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE3h
BL = ???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE4h
DX = segment of ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE5h
DS:SI -> wildcard filename???
DX = ???
Return: AX = ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE6h
DS:SI -> ???
Return: AX = ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE7h
BX = segment of ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - DISPLAY NUMBER
AX = FFE8h
CX = number
DH = attribute
DS:SI -> destination for ASCII number
Return: DS:SI buffer filled in with alternating characters and attributes
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFE9h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - DISPLAY COUNTED STRING
AX = FFEAh
DS:SI -> counted string (count byte followed by string)
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFEBh
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFECh
DS:SI -> FAR routine to ???
BX = ???
Return: AX = ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFEDh
Return: AX = ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFEEh
SI = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - INSTALLATION CHECK
AX = FFEFh
CX = 0000h
Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
BX = segment of resident portion
AX = ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF0h
DX = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ALTERNATE INSTALLATION CHECK
AX = FFF1h
BX = 0000h leave ??? flag as is
nonzero set ??? flag
Return: CX = 5555h if installed
DX = 5555h
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF2h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF3h
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF4h
???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - GET SCREEN ATTRIBUTE ARRAY
AX = FFF5h
Return: ES:BX -> array of screen attributes
00h BYTE normal characters on desktop menu
01h BYTE highlighted characters on desktop menu
02h BYTE
03h BYTE
etc.
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF6h
DS = ???
BX = ???
DX = ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF7h
SI = ???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF8h
DS:SI -> ???
BX = ???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFF9h
ES:BX -> FAR routine to ???
Return: ???
Note: available only when popped up
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFFAh
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFFBh
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - GET ???
AX = FFFCh
Return: ES:BX = ???
DS:DX = original INT 9 vector
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - ???
AX = FFFDh
???
Return: ???
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - SHOW MOUSE CURSOR
AX = FFFEh
---------------------------------------------
INT 16 - PC Tools v5.1 DESKTOP API - HIDE MOUSE CURSOR
AX = FFFFh
---------------------------------------------
INT 17 - PRINTER - OUTPUT CHARACTER
AH = 00h
AL = character
DX = printer port (0-3)
Return: AH = status bits
0 = time out
1 = unused
2 = unused
3 = I/O error
4 = selected
5 = out of paper
6 = acknowledge
7 = not busy
---------------------------------------------
INT 17 - PRINTER - INITIALIZE
AH = 01h
DX = printer port (0-3)
Return: AH = status (see AH=00h)
---------------------------------------------
INT 17 - PRINTER - GET STATUS
AH = 02h
DX = printer port (0-3)
Return: AH = status (see AH=00h)
---------------------------------------------
INT 17 - INSET - INSTALLATION CHECK
AH = 02h
DX = 0000h
CX = 07C3h (1987d)
Return: CX = 07C2h (1986d) if installed
Note: INSET is a text/graphics integration program
---------------------------------------------
INT 17 - FLASHUP.COM - INSTALLATION CHECK
AH = 60h
Return: AL = 60h
DX = CS of resident code
Note: FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
FLASHUP also hooks INT 10 and received commands via INT 10/AH=09h,0Ah
consisting of an 80h followed by the actual command
---------------------------------------------
INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
AH = 61h
Return: AL = 61h
DX = CS of resident code
Note: SPEEDSCR.COM is by The Software Bottling Co.
---------------------------------------------
INT 17 - INSET - EXECUTE COMMAND STRING
AX = CD00h
DS:DX -> ASCIZ command string (max 80 bytes)
Return: CX = 07C2h (1986d)
Note: user interface menus pop up after last command, unless that command
exits INSET
---------------------------------------------
INT 17 - INSET - GET IMAGE SIZE
AX = CD01h
DS:DX -> ASCIZ name of image file
Return: AX = height in 1/720th inch
BX = width in 1/720th inch
CX = 07C2h (1986d)
---------------------------------------------
INT 17 - INSET - INITIALIZE
AX = CD02h
Return: CX = 07C2h (1986d)
Note: all open files are closed and the printer is reset
---------------------------------------------
INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
AX = CD03h
Return: CX = 07C2h (1986d)
---------------------------------------------
INT 17 - INSET - INITIALIZE LINKED MODE
AX = CD04h
ES:DI -> FAR routine for linked mode
Return: CX = 07C2h
Note: calling sequence for linked-mode routine
AL = 00h send character in BL to printer
= 01h send CX bytes from DS:DX to printer
= 02h move print head to horizontal starting position of image
return code for linked-mode routine:
AX = 0000h success
= 0001h failure
SeeAlso: AX=CD08h
---------------------------------------------
INT 17 - INSET - START MERGING IMAGE INTO TEXT
AX = CD05h
DS:DX -> ASCIZ name of PIX file
CX = left margin of text in 1/720th inch
Return: AH = printer type
00h page-oriented (multiple images may be placed side-by-side)
01h line-oriented (use AX=CD06h for vertical paper movement)
CX = 07C2h (1986d)
---------------------------------------------
INT 17 - INSET - GRAPHICS LINE FEED
AX = CD06h
Return: AH = completion status
00h image complete
01h image incomplete
CX = 07C2h (1986d)
SeeAlso: AX=CD09h
---------------------------------------------
INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
AX = CD07h
Return: CX = 07C2h
---------------------------------------------
INT 17 - INSET - CANCEL LINK MODE
AX = CD08h
Return: CX = 07C2h
SeeAlso: AX=CD04h
---------------------------------------------
INT 17 - INSET - ALTER GRAPHICS LINE SPACING
AX = CD09h
CX = line spacing in 1/720th inch
Return: CX = 07C2h
Note: not yet implemented, line spacing is currently fixed at 1/6 inch
SeeAlso: AX=CD06h
---------------------------------------------
INT 17 - INSET - GET SETUP
AX = CD0Ah
DS:DX -> buffer for IN.SET data
Return: CX = 07C2h
---------------------------------------------
INT 17 - INSET - START GETTING SCALED IMAGE
AX = CD0Bh
DS:SI -> ASCIZ pathname of .PIX file
BX = number of bitplanes
CX = number of rows in output bitmap
DX = number of columns in output bitmap
Return: AX = status
0000h OK
FFFFh error
Note: image is returned in strips by repeated calls to AX=CD0Ch
---------------------------------------------
INT 17 - INSET - GET NEXT IMAGE STRIP
AX = CD0Ch
Return: AX = status
0000h OK but not complete
0001h OK and image complete
FFFFh error
DS:SI -> buffer (max 4K) for bit map strip
CX = start row
DX = number of rows
BX = offset in bytes between bit planes
Note: buffer may be overwritten by subsequent calls
SeeAlso: AX=CD0Bh
---------------------------------------------
INT 18 - TRANSFER TO ROM BASIC
causes transfer to ROM-based BASIC (IBM-PC)
often reboots a compatible; often has no effect at all
---------------------------------------------
INT 19 - DISK BOOT
causes reboot of disk system (no memory test performed, interrupt vectors
preserved). Because interrupt vectors are preserved, this interrupt usually
causes a system hang if any TSRs have hooked vectors from 00h through 1Ch,
particularly INT 08.
Usually, the BIOS will try to read sector 1, head 0, track 0 from drive A:
to 0000h:7C00h. If this fails, and a hard disk is installed, the BIOS will
read sector 1, head 0, track 0 of the first hard disk. This sector should
contain a master bootstrap loader and a partition table. After loading the
master boot sector at 0000h:7C00h, the master bootstrap loader is given
control. It will scan the partition table for an active partition, and will
then load the operating system's bootstrap loader (contained in the first
sector of the active partition) and give it control.
Notes: to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
0040h:0072h and jump to FFFFh:0000h. For a cold boot equivalent to
a reset, store 0000h at 0040h:0072h before jumping.
VDISK.SYS hooks this interrupt to allow applications to find out how
much extended memory has been used by VDISKs (the three bytes at
offset 2Ch in the INT 19 handler's segment contain the linear address
of the first free extended memory).
Format of hard disk master boot sector:
Offset Size Description
00h 446 BYTEs Master bootstrap loader code
1BEh 16 BYTEs partition record for partition 1 (see below)
1CEh 16 BYTEs partition record for partition 2
1DEh 16 BYTEs partition record for partition 3
1EEh 16 BYTEs partition record for partition 4
1FEh WORD signature, AA55h indicates valid boot block
Format of partition record:
Offset Size Description
00h BYTE boot indicator (80h = active partition)
01h BYTE partition start head
02h BYTE partition start sector (bits 0-5)
03h BYTE partition start track (bits 8,9 in bits 6,7 of sector)
04h BYTE operating system indicator (see below)
05h BYTE partition end head
06h BYTE partition end sector (bits 0-5)
07h BYTE partition end track (bits 8,9 in bits 6,7 of sector)
08h DWORD sectors preceding partition
0Ch DWORD length of partition in sectors
Values for operating system indicator:
00h empty
01h DOS 12-bit FAT
02h XENIX file system
03h XENIX /usr file system (obsolete???)
04h DOS 16-bit FAT
05h DOS 3.3+ extended partition
06h DOS Large File System
07h QNX
08h AIX bootable partition
09h AIX data partition
51h Disk Manager
52h CP/M ???
56h GB ???
61h SpeedStor
63h SysV/386
64h Novell NetWare
75h PC/IX
80h Minix v1.3 and below
81h Minix v1.5+
DBh CP/M
E1h SpeedStor 12-bit FAT extended partition
E4h SpeedStor 16-bit FAT extended partition
FFh BBT ???
---------------------------------------------
INT 1A - CLOCK - GET TIME OF DAY
AH = 00h
Return: CX:DX = clock count
AL = 00h if clock was read or written (via AH=0,1) since the previous
midnight
Otherwise, AL > 0
Note: IBM and many clone BIOSes set the flag for AL rather than incrementing
it, leading to loss of a day if two consecutive midnights pass
without a request for the time (e.g. if the system is on but idle)
SeeAlso: AH=02h,INT 21/AH=2Ch
---------------------------------------------
INT 1A - CLOCK - SET TIME OF DAY
AH = 01h
CX:DX = clock count
Return: time of day set
SeeAlso: AH=03h,INT 21/AH=2Dh
---------------------------------------------
INT 1A - CLOCK - READ REAL TIME CLOCK (AT,XT286,CONV,PS)
AH = 02h
Return: CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
SeeAlso: AH=00h
---------------------------------------------
INT 1A - CLOCK - SET REAL TIME CLOCK (AT,XT286,CONV,PS)
AH = 03h
CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
DL = 01h if daylight savings, 00h if standard time
Return: CMOS clock set
SeeAlso: AH=01h
---------------------------------------------
INT 1A - CLOCK - READ DATE FROM REAL TIME CLOCK (AT,XT286,CONV,PS)
AH = 04h
Return: DL = day in BCD
DH = month in BCD
CL = year in BCD
CH = century (19h or 20h)
SeeAlso: INT 21/AH=2Ah
---------------------------------------------
INT 1A - CLOCK - SET DATE IN REAL TIME CLOCK (AT,XT286,CONV,PS)
AH = 05h
DL = day in BCD
DH = month in BCD
CL = year in BCD
CH = century (19h or 20h)
Return: CMOS clock set
SeeAlso: INT 21/AH=2Bh
---------------------------------------------
INT 1A - CLOCK - SET ALARM (AT,XT286,CONV,PS)
AH = 06h
CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
Return: CF set if alarm already set or clock inoperable
INT 4Ah will be called when alarm goes off, every 24 hours until reset
SeeAlso: AH=07h,INT 4A
---------------------------------------------
INT 1A - CLOCK - RESET ALARM (AT,XT286,CONV,PS)
AH = 07h
Return: alarm disabled
SeeAlso: AH=06h
---------------------------------------------
INT 1A - CLOCK - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
AH = 08h
CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
---------------------------------------------
INT 1A - CLOCK - READ RTC ALARM TIME AND STATUS (CONV,PS30)
AH = 09h
Return: CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
DL = alarm status
00h alarm not enabled
01h alarm enabled but will not power up system
02h alarm will power up system
---------------------------------------------
INT 1A - CLOCK - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
AH = 0Ah
Return: CF set on error
CX = count of days since Jan 1,1980
SeeAlso: AH=0Bh
---------------------------------------------
INT 1A - CLOCK - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
AH = 0Bh
CX = count of days since Jan 1,1980
Return: CF set on error
CF clear if successful
SeeAlso: AH=0Ah
---------------------------------------------
INT 1A - WORD PERFECT 5.0 Third Party Interface - INSTALLATION CHECK
AX = 3601h
Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
ASCIZ string "WPCORP\0"
Notes: WordPerfect 5.0 will call this interrupt at start up to determine if a
third party product wants to interface with it. The third party
product must intercept this interrupt and return the address of a
keyboard monitor routine.
Before checking for keyboard input, and after every key entered by the
user, Word Perfect will call the routine whose address was provided
in DS:SI with the following parameters:
Entry: AX = key code or 0
BX = WordPerfect state flag
Exit: AX = 0 or key code
BX = 0 or segment address of buffer with key codes
See the "WordPerfect 5.0 Developer's Toolkit" for further information.
---------------------------------------------
INT 1A - PCjr - SET UP SOUND MULTIPLEXOR
AH = 80h
AL = 00h source is 8253 channel 2
01h source is cassette input
02h source is I/O channel "Audio IN"
03h source is sound generator chip
---------------------------------------------
INT 1A - AT&T 6300 - READ TIME AND DATE
AH = FEh
Return: BX = day count (0 = Jan 1, 1984)
CH = hour
CL = minute
DH = second
DL = hundredths
SeeAlso: AH=FFh,INT 21/AH=2Ah,2Ch
---------------------------------------------
INT 1A - AT&T 6300 - SET TIME AND DATE
AH = FFh
BX = day count (0 = Jan 1, 1984)
CH = hour
CL = minute
DH = second
DL = hundredths
Return: ???
SeeAlso: AH=FEh,INT 21/AH=2Bh,2Dh
---------------------------------------------
INT 1B - CTRL-BREAK KEY
This interrupt is called when the keyboard scanner of the IBM
machines detects CTRL and BREAK pressed at the same time. It
normally points to a short routine in DOS which sets the
Ctrl-C flag, thus invoking INT 23h the next time DOS checks
for Ctrl-C.
SeeAlso: INT 23
---------------------------------------------
INT 1C - CLOCK TICK
This interrupt is called (in the IBM) at the end of each time-update
operation by the time-of-day routines.
Notes: points to an IRET by default
preferred interrupt to chain when a program needs to be invoked
regularly
SeeAlso: INT 08
---------------------------------------------
INT 1D - (NOT a vector!) 6845 VIDEO INIT TABLES
Format of video init tables:
Offset Size Description
00h 16 BYTEs table for modes 0 and 1 \
10h 16 BYTEs table for modes 2 and 3 \ each table contains values
20h 16 BYTEs table for modes 4, 5, and 6 / for first sixteen 6485 regs
30h 16 BYTEs table for mode 7 /
40h WORD size of video RAM for modes 0 and 1
42h WORD size of video RAM for modes 2 and 3
44h WORD size of video RAM for modes 4 and 5
46h WORD size of video RAM for modes 6 and 7
48h 8 BYTEs number of colums in each of modes 0 through 7
50h 8 BYTEs video controller mode byte for each mode
---------------------------------------------
INT 1E - (NOT a vector!) DISKETTE PARAMS (BASE TABLE)
default parameters at F000h:EFC7h in PC and most compatibles
SeeAlso: INT 41
Format of diskette parameters:
Offset Size Description
00h BYTE 4-bit step rate & 4-bit head unload times
01h BYTE 7-bit head load time & 1-bit DMA flag
02h BYTE motor off time in clock ticks (36 to 38 typical)
03h BYTE sector size in bytes (0->128, 1->256, 2->512, 3->1024)
04h BYTE last sector number (8 or 9 typical)
05h BYTE inter-sector gap size on read/write (42 typical)
06h BYTE data transfer length (255 typical)
07h BYTE inter-sector gap size on format (80 typical)
08h BYTE sector fill on format (F6h typical)
09h BYTE head-settle time ms (typical 25, 1.10->0, 2.10->15, 3.10->1)
0Ah BYTE motor start-up time (1/8 secs) (typical 4, 2.10->2)
---------------------------------------------
INT 1F - (NOT a vector!) GRAPHICS SET 2
pointer to bitmaps for high 128 chars (eight bytes per character)
---------------------------------------------